{
  "schemaVersion": "1.0",
  "item": {
    "slug": "python-dataviz",
    "name": "Python Dataviz",
    "source": "tencent",
    "type": "skill",
    "category": "数据分析",
    "sourceUrl": "https://clawhub.ai/matthew-a-gordon/python-dataviz",
    "canonicalUrl": "https://clawhub.ai/matthew-a-gordon/python-dataviz",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/python-dataviz",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=python-dataviz",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "README.md",
      "SKILL.md",
      "pyproject.toml",
      "references/colors.md",
      "references/statistical.md",
      "scripts/bar_chart.py"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-23T16:43:11.935Z",
      "expiresAt": "2026-04-30T16:43:11.935Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
        "contentDisposition": "attachment; filename=\"4claw-imageboard-1.0.1.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/python-dataviz"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/python-dataviz",
    "agentPageUrl": "https://openagent3.xyz/skills/python-dataviz/agent",
    "manifestUrl": "https://openagent3.xyz/skills/python-dataviz/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/python-dataviz/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Python Data Visualization",
        "body": "Create professional charts, graphs, and statistical visualizations using Python's leading libraries."
      },
      {
        "title": "Libraries & Use Cases",
        "body": "matplotlib - Static plots, publication-quality, full control\n\nBar, line, scatter, pie, histogram, heatmap\nMulti-panel figures, subplots\nCustom styling, annotations\nExport: PNG, SVG, PDF\n\nseaborn - Statistical visualizations, beautiful defaults\n\nDistribution plots (violin, box, kde, histogram)\nCategorical plots (bar, count, swarm, box)\nRelationship plots (scatter, line, regression)\nMatrix plots (heatmap, clustermap)\nBuilt on matplotlib, integrates seamlessly\n\nplotly - Interactive charts, web-friendly\n\nHover tooltips, zoom, pan\n3D plots, animations\nDashboards via Dash framework\nExport: HTML, PNG (requires kaleido)"
      },
      {
        "title": "Setup Environment",
        "body": "cd skills/python-dataviz\npython3 -m venv .venv\nsource .venv/bin/activate\npip install ."
      },
      {
        "title": "Create a Chart",
        "body": "import matplotlib.pyplot as plt\nimport numpy as np\n\n# Data\nx = np.linspace(0, 10, 100)\ny = np.sin(x)\n\n# Plot\nplt.figure(figsize=(10, 6))\nplt.plot(x, y, linewidth=2, color='#667eea')\nplt.title('Sine Wave', fontsize=16, fontweight='bold')\nplt.xlabel('X Axis')\nplt.ylabel('Y Axis')\nplt.grid(alpha=0.3)\nplt.tight_layout()\n\n# Export\nplt.savefig('output.png', dpi=300, bbox_inches='tight')\nplt.savefig('output.svg', bbox_inches='tight')"
      },
      {
        "title": "Chart Selection Guide",
        "body": "Distribution/Statistical:\n\nHistogram → plt.hist() or sns.histplot()\nBox plot → sns.boxplot()\nViolin plot → sns.violinplot()\nKDE → sns.kdeplot()\n\nComparison:\n\nBar chart → plt.bar() or sns.barplot()\nGrouped bar → sns.barplot(hue=...)\nHorizontal bar → plt.barh() or sns.barplot(orient='h')\n\nRelationship:\n\nScatter → plt.scatter() or sns.scatterplot()\nLine → plt.plot() or sns.lineplot()\nRegression → sns.regplot() or sns.lmplot()\n\nHeatmaps:\n\nCorrelation matrix → sns.heatmap(df.corr())\n2D data → plt.imshow() or sns.heatmap()\n\nInteractive:\n\nAny plotly chart → plotly.express or plotly.graph_objects\nSee references/plotly-examples.md"
      },
      {
        "title": "1. Figure Size & DPI",
        "body": "plt.figure(figsize=(10, 6))  # Width x Height in inches\nplt.savefig('output.png', dpi=300)  # Publication: 300 dpi, Web: 72-150 dpi"
      },
      {
        "title": "2. Color Palettes",
        "body": "# Seaborn palettes (works with matplotlib too)\nimport seaborn as sns\nsns.set_palette(\"husl\")  # Colorful\nsns.set_palette(\"muted\")  # Soft\nsns.set_palette(\"deep\")  # Bold\n\n# Custom colors\ncolors = ['#667eea', '#764ba2', '#f6ad55', '#4299e1']"
      },
      {
        "title": "3. Styling",
        "body": "# Use seaborn styles even for matplotlib\nimport seaborn as sns\nsns.set_theme()  # Better defaults\nsns.set_style(\"whitegrid\")  # Options: whitegrid, darkgrid, white, dark, ticks\n\n# Or matplotlib styles\nplt.style.use('ggplot')  # Options: ggplot, seaborn, bmh, fivethirtyeight"
      },
      {
        "title": "4. Multiple Subplots",
        "body": "fig, axes = plt.subplots(2, 2, figsize=(12, 10))\naxes[0, 0].plot(x, y1)\naxes[0, 1].plot(x, y2)\n# etc.\nplt.tight_layout()  # Prevent label overlap"
      },
      {
        "title": "5. Export Formats",
        "body": "# PNG for sharing/embedding (raster)\nplt.savefig('chart.png', dpi=300, bbox_inches='tight', transparent=False)\n\n# SVG for editing/scaling (vector)\nplt.savefig('chart.svg', bbox_inches='tight')\n\n# For plotly (interactive)\nimport plotly.express as px\nfig = px.scatter(df, x='col1', y='col2')\nfig.write_html('chart.html')"
      },
      {
        "title": "Advanced Topics",
        "body": "See references/ for detailed guides:\n\nColor theory & palettes: references/colors.md\nStatistical plots: references/statistical.md\nPlotly interactive charts: references/plotly-examples.md\nMulti-panel layouts: references/layouts.md"
      },
      {
        "title": "Example Scripts",
        "body": "See scripts/ for ready-to-use examples:\n\nscripts/bar_chart.py - Bar and grouped bar charts\nscripts/line_chart.py - Line plots with multiple series\nscripts/scatter_plot.py - Scatter plots with regression\nscripts/heatmap.py - Correlation heatmaps\nscripts/distribution.py - Histograms, KDE, violin plots\nscripts/interactive.py - Plotly interactive charts"
      },
      {
        "title": "Data from CSV",
        "body": "import pandas as pd\ndf = pd.read_csv('data.csv')\n\n# Plot with pandas (uses matplotlib)\ndf.plot(x='date', y='value', kind='line', figsize=(10, 6))\nplt.savefig('output.png', dpi=300)\n\n# Or with seaborn for better styling\nsns.lineplot(data=df, x='date', y='value')\nplt.savefig('output.png', dpi=300)"
      },
      {
        "title": "Dictionary Data",
        "body": "data = {'Category A': 25, 'Category B': 40, 'Category C': 15}\n\n# Matplotlib\nplt.bar(data.keys(), data.values())\nplt.savefig('output.png', dpi=300)\n\n# Seaborn (convert to DataFrame)\nimport pandas as pd\ndf = pd.DataFrame(list(data.items()), columns=['Category', 'Value'])\nsns.barplot(data=df, x='Category', y='Value')\nplt.savefig('output.png', dpi=300)"
      },
      {
        "title": "NumPy Arrays",
        "body": "import numpy as np\n\nx = np.linspace(0, 10, 100)\ny = np.sin(x)\n\nplt.plot(x, y)\nplt.savefig('output.png', dpi=300)"
      },
      {
        "title": "Troubleshooting",
        "body": "\"No module named matplotlib\"\n\ncd skills/python-dataviz\nsource .venv/bin/activate\npip install -r requirements.txt\n\nBlank output / \"Figure is empty\"\n\nCheck that plt.savefig() comes AFTER plotting commands\nUse plt.show() for interactive viewing during development\n\nLabels cut off\n\nplt.tight_layout()  # Add before plt.savefig()\n# Or\nplt.savefig('output.png', bbox_inches='tight')\n\nLow resolution output\n\nplt.savefig('output.png', dpi=300)  # Not 72 or 100"
      },
      {
        "title": "Environment",
        "body": "The skill includes a venv with all dependencies. Always activate before use:\n\ncd /home/matt/.openclaw/workspace/skills/python-dataviz\nsource .venv/bin/activate\n\nDependencies: matplotlib, seaborn, plotly, pandas, numpy, kaleido (for plotly static export)"
      }
    ],
    "body": "Python Data Visualization\n\nCreate professional charts, graphs, and statistical visualizations using Python's leading libraries.\n\nLibraries & Use Cases\n\nmatplotlib - Static plots, publication-quality, full control\n\nBar, line, scatter, pie, histogram, heatmap\nMulti-panel figures, subplots\nCustom styling, annotations\nExport: PNG, SVG, PDF\n\nseaborn - Statistical visualizations, beautiful defaults\n\nDistribution plots (violin, box, kde, histogram)\nCategorical plots (bar, count, swarm, box)\nRelationship plots (scatter, line, regression)\nMatrix plots (heatmap, clustermap)\nBuilt on matplotlib, integrates seamlessly\n\nplotly - Interactive charts, web-friendly\n\nHover tooltips, zoom, pan\n3D plots, animations\nDashboards via Dash framework\nExport: HTML, PNG (requires kaleido)\nQuick Start\nSetup Environment\ncd skills/python-dataviz\npython3 -m venv .venv\nsource .venv/bin/activate\npip install .\n\nCreate a Chart\nimport matplotlib.pyplot as plt\nimport numpy as np\n\n# Data\nx = np.linspace(0, 10, 100)\ny = np.sin(x)\n\n# Plot\nplt.figure(figsize=(10, 6))\nplt.plot(x, y, linewidth=2, color='#667eea')\nplt.title('Sine Wave', fontsize=16, fontweight='bold')\nplt.xlabel('X Axis')\nplt.ylabel('Y Axis')\nplt.grid(alpha=0.3)\nplt.tight_layout()\n\n# Export\nplt.savefig('output.png', dpi=300, bbox_inches='tight')\nplt.savefig('output.svg', bbox_inches='tight')\n\nChart Selection Guide\n\nDistribution/Statistical:\n\nHistogram → plt.hist() or sns.histplot()\nBox plot → sns.boxplot()\nViolin plot → sns.violinplot()\nKDE → sns.kdeplot()\n\nComparison:\n\nBar chart → plt.bar() or sns.barplot()\nGrouped bar → sns.barplot(hue=...)\nHorizontal bar → plt.barh() or sns.barplot(orient='h')\n\nRelationship:\n\nScatter → plt.scatter() or sns.scatterplot()\nLine → plt.plot() or sns.lineplot()\nRegression → sns.regplot() or sns.lmplot()\n\nHeatmaps:\n\nCorrelation matrix → sns.heatmap(df.corr())\n2D data → plt.imshow() or sns.heatmap()\n\nInteractive:\n\nAny plotly chart → plotly.express or plotly.graph_objects\nSee references/plotly-examples.md\nBest Practices\n1. Figure Size & DPI\nplt.figure(figsize=(10, 6))  # Width x Height in inches\nplt.savefig('output.png', dpi=300)  # Publication: 300 dpi, Web: 72-150 dpi\n\n2. Color Palettes\n# Seaborn palettes (works with matplotlib too)\nimport seaborn as sns\nsns.set_palette(\"husl\")  # Colorful\nsns.set_palette(\"muted\")  # Soft\nsns.set_palette(\"deep\")  # Bold\n\n# Custom colors\ncolors = ['#667eea', '#764ba2', '#f6ad55', '#4299e1']\n\n3. Styling\n# Use seaborn styles even for matplotlib\nimport seaborn as sns\nsns.set_theme()  # Better defaults\nsns.set_style(\"whitegrid\")  # Options: whitegrid, darkgrid, white, dark, ticks\n\n# Or matplotlib styles\nplt.style.use('ggplot')  # Options: ggplot, seaborn, bmh, fivethirtyeight\n\n4. Multiple Subplots\nfig, axes = plt.subplots(2, 2, figsize=(12, 10))\naxes[0, 0].plot(x, y1)\naxes[0, 1].plot(x, y2)\n# etc.\nplt.tight_layout()  # Prevent label overlap\n\n5. Export Formats\n# PNG for sharing/embedding (raster)\nplt.savefig('chart.png', dpi=300, bbox_inches='tight', transparent=False)\n\n# SVG for editing/scaling (vector)\nplt.savefig('chart.svg', bbox_inches='tight')\n\n# For plotly (interactive)\nimport plotly.express as px\nfig = px.scatter(df, x='col1', y='col2')\nfig.write_html('chart.html')\n\nAdvanced Topics\n\nSee references/ for detailed guides:\n\nColor theory & palettes: references/colors.md\nStatistical plots: references/statistical.md\nPlotly interactive charts: references/plotly-examples.md\nMulti-panel layouts: references/layouts.md\nExample Scripts\n\nSee scripts/ for ready-to-use examples:\n\nscripts/bar_chart.py - Bar and grouped bar charts\nscripts/line_chart.py - Line plots with multiple series\nscripts/scatter_plot.py - Scatter plots with regression\nscripts/heatmap.py - Correlation heatmaps\nscripts/distribution.py - Histograms, KDE, violin plots\nscripts/interactive.py - Plotly interactive charts\nCommon Patterns\nData from CSV\nimport pandas as pd\ndf = pd.read_csv('data.csv')\n\n# Plot with pandas (uses matplotlib)\ndf.plot(x='date', y='value', kind='line', figsize=(10, 6))\nplt.savefig('output.png', dpi=300)\n\n# Or with seaborn for better styling\nsns.lineplot(data=df, x='date', y='value')\nplt.savefig('output.png', dpi=300)\n\nDictionary Data\ndata = {'Category A': 25, 'Category B': 40, 'Category C': 15}\n\n# Matplotlib\nplt.bar(data.keys(), data.values())\nplt.savefig('output.png', dpi=300)\n\n# Seaborn (convert to DataFrame)\nimport pandas as pd\ndf = pd.DataFrame(list(data.items()), columns=['Category', 'Value'])\nsns.barplot(data=df, x='Category', y='Value')\nplt.savefig('output.png', dpi=300)\n\nNumPy Arrays\nimport numpy as np\n\nx = np.linspace(0, 10, 100)\ny = np.sin(x)\n\nplt.plot(x, y)\nplt.savefig('output.png', dpi=300)\n\nTroubleshooting\n\n\"No module named matplotlib\"\n\ncd skills/python-dataviz\nsource .venv/bin/activate\npip install -r requirements.txt\n\n\nBlank output / \"Figure is empty\"\n\nCheck that plt.savefig() comes AFTER plotting commands\nUse plt.show() for interactive viewing during development\n\nLabels cut off\n\nplt.tight_layout()  # Add before plt.savefig()\n# Or\nplt.savefig('output.png', bbox_inches='tight')\n\n\nLow resolution output\n\nplt.savefig('output.png', dpi=300)  # Not 72 or 100\n\nEnvironment\n\nThe skill includes a venv with all dependencies. Always activate before use:\n\ncd /home/matt/.openclaw/workspace/skills/python-dataviz\nsource .venv/bin/activate\n\n\nDependencies: matplotlib, seaborn, plotly, pandas, numpy, kaleido (for plotly static export)"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/matthew-a-gordon/python-dataviz",
    "publisherUrl": "https://clawhub.ai/matthew-a-gordon/python-dataviz",
    "owner": "matthew-a-gordon",
    "version": "1.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/python-dataviz",
    "downloadUrl": "https://openagent3.xyz/downloads/python-dataviz",
    "agentUrl": "https://openagent3.xyz/skills/python-dataviz/agent",
    "manifestUrl": "https://openagent3.xyz/skills/python-dataviz/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/python-dataviz/agent.md"
  }
}