python-dataviz

Professional data visualization using Python (matplotlib, seaborn, plotly). Create publication-quality static charts, statistical visualizations, and interactive plots. Use when generating charts/graphs/plots from data, creating infographics with data components, or producing scientific/statistical visualizations. Supports PNG/SVG (static) and HTML (interactive) export.

Safety Notice

This listing is from the official public ClawHub registry. Review SKILL.md and referenced scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "python-dataviz" with this command: npx skills add matthew-a-gordon/python-dataviz

Python Data Visualization

Create professional charts, graphs, and statistical visualizations using Python's leading libraries.

Libraries & Use Cases

matplotlib - Static plots, publication-quality, full control

  • Bar, line, scatter, pie, histogram, heatmap
  • Multi-panel figures, subplots
  • Custom styling, annotations
  • Export: PNG, SVG, PDF

seaborn - Statistical visualizations, beautiful defaults

  • Distribution plots (violin, box, kde, histogram)
  • Categorical plots (bar, count, swarm, box)
  • Relationship plots (scatter, line, regression)
  • Matrix plots (heatmap, clustermap)
  • Built on matplotlib, integrates seamlessly

plotly - Interactive charts, web-friendly

  • Hover tooltips, zoom, pan
  • 3D plots, animations
  • Dashboards via Dash framework
  • Export: HTML, PNG (requires kaleido)

Quick Start

Setup Environment

cd skills/python-dataviz
python3 -m venv .venv
source .venv/bin/activate
pip install .

Create a Chart

import matplotlib.pyplot as plt
import numpy as np

# Data
x = np.linspace(0, 10, 100)
y = np.sin(x)

# Plot
plt.figure(figsize=(10, 6))
plt.plot(x, y, linewidth=2, color='#667eea')
plt.title('Sine Wave', fontsize=16, fontweight='bold')
plt.xlabel('X Axis')
plt.ylabel('Y Axis')
plt.grid(alpha=0.3)
plt.tight_layout()

# Export
plt.savefig('output.png', dpi=300, bbox_inches='tight')
plt.savefig('output.svg', bbox_inches='tight')

Chart Selection Guide

Distribution/Statistical:

  • Histogram → plt.hist() or sns.histplot()
  • Box plot → sns.boxplot()
  • Violin plot → sns.violinplot()
  • KDE → sns.kdeplot()

Comparison:

  • Bar chart → plt.bar() or sns.barplot()
  • Grouped bar → sns.barplot(hue=...)
  • Horizontal bar → plt.barh() or sns.barplot(orient='h')

Relationship:

  • Scatter → plt.scatter() or sns.scatterplot()
  • Line → plt.plot() or sns.lineplot()
  • Regression → sns.regplot() or sns.lmplot()

Heatmaps:

  • Correlation matrix → sns.heatmap(df.corr())
  • 2D data → plt.imshow() or sns.heatmap()

Interactive:

  • Any plotly chart → plotly.express or plotly.graph_objects
  • See references/plotly-examples.md

Best Practices

1. Figure Size & DPI

plt.figure(figsize=(10, 6))  # Width x Height in inches
plt.savefig('output.png', dpi=300)  # Publication: 300 dpi, Web: 72-150 dpi

2. Color Palettes

# Seaborn palettes (works with matplotlib too)
import seaborn as sns
sns.set_palette("husl")  # Colorful
sns.set_palette("muted")  # Soft
sns.set_palette("deep")  # Bold

# Custom colors
colors = ['#667eea', '#764ba2', '#f6ad55', '#4299e1']

3. Styling

# Use seaborn styles even for matplotlib
import seaborn as sns
sns.set_theme()  # Better defaults
sns.set_style("whitegrid")  # Options: whitegrid, darkgrid, white, dark, ticks

# Or matplotlib styles
plt.style.use('ggplot')  # Options: ggplot, seaborn, bmh, fivethirtyeight

4. Multiple Subplots

fig, axes = plt.subplots(2, 2, figsize=(12, 10))
axes[0, 0].plot(x, y1)
axes[0, 1].plot(x, y2)
# etc.
plt.tight_layout()  # Prevent label overlap

5. Export Formats

# PNG for sharing/embedding (raster)
plt.savefig('chart.png', dpi=300, bbox_inches='tight', transparent=False)

# SVG for editing/scaling (vector)
plt.savefig('chart.svg', bbox_inches='tight')

# For plotly (interactive)
import plotly.express as px
fig = px.scatter(df, x='col1', y='col2')
fig.write_html('chart.html')

Advanced Topics

See references/ for detailed guides:

  • Color theory & palettes: references/colors.md
  • Statistical plots: references/statistical.md
  • Plotly interactive charts: references/plotly-examples.md
  • Multi-panel layouts: references/layouts.md

Example Scripts

See scripts/ for ready-to-use examples:

  • scripts/bar_chart.py - Bar and grouped bar charts
  • scripts/line_chart.py - Line plots with multiple series
  • scripts/scatter_plot.py - Scatter plots with regression
  • scripts/heatmap.py - Correlation heatmaps
  • scripts/distribution.py - Histograms, KDE, violin plots
  • scripts/interactive.py - Plotly interactive charts

Common Patterns

Data from CSV

import pandas as pd
df = pd.read_csv('data.csv')

# Plot with pandas (uses matplotlib)
df.plot(x='date', y='value', kind='line', figsize=(10, 6))
plt.savefig('output.png', dpi=300)

# Or with seaborn for better styling
sns.lineplot(data=df, x='date', y='value')
plt.savefig('output.png', dpi=300)

Dictionary Data

data = {'Category A': 25, 'Category B': 40, 'Category C': 15}

# Matplotlib
plt.bar(data.keys(), data.values())
plt.savefig('output.png', dpi=300)

# Seaborn (convert to DataFrame)
import pandas as pd
df = pd.DataFrame(list(data.items()), columns=['Category', 'Value'])
sns.barplot(data=df, x='Category', y='Value')
plt.savefig('output.png', dpi=300)

NumPy Arrays

import numpy as np

x = np.linspace(0, 10, 100)
y = np.sin(x)

plt.plot(x, y)
plt.savefig('output.png', dpi=300)

Troubleshooting

"No module named matplotlib"

cd skills/python-dataviz
source .venv/bin/activate
pip install -r requirements.txt

Blank output / "Figure is empty"

  • Check that plt.savefig() comes AFTER plotting commands
  • Use plt.show() for interactive viewing during development

Labels cut off

plt.tight_layout()  # Add before plt.savefig()
# Or
plt.savefig('output.png', bbox_inches='tight')

Low resolution output

plt.savefig('output.png', dpi=300)  # Not 72 or 100

Environment

The skill includes a venv with all dependencies. Always activate before use:

cd /home/matt/.openclaw/workspace/skills/python-dataviz
source .venv/bin/activate

Dependencies: matplotlib, seaborn, plotly, pandas, numpy, kaleido (for plotly static export)

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Coding

Power Automate Debug

Debug failing Power Automate cloud flows using the FlowStudio MCP server. The Graph API only shows top-level status codes. This skill gives your agent action...

Registry SourceRecently Updated
Coding

Power Automate Mcp

Foundation skill for Power Automate via FlowStudio MCP — auth setup, the reusable MCP helper (Python + Node.js), tool discovery via `list_skills` / `tool_sea...

Registry SourceRecently Updated
Coding

data-analyst

Expert data analyst specializing in business intelligence, data visualization, and statistical analysis. Masters SQL, Python, and BI tools to transform raw d...

Registry SourceRecently Updated
Coding

DeviantArt Post

Post artwork, journals, and status updates to a user's DeviantArt account through the official DeviantArt API using OAuth 2.1 Authorization Code with PKCE, S...

Registry SourceRecently Updated