python-datavizProfessional data visualization using Python (matplotlib, seaborn, plotly). Create publication-quality static charts, statistical visualizations, and interac...
Install via ClawdBot CLI:
clawdbot install matthew-a-gordon/python-datavizCreate professional charts, graphs, and statistical visualizations using Python's leading libraries.
matplotlib - Static plots, publication-quality, full control
seaborn - Statistical visualizations, beautiful defaults
plotly - Interactive charts, web-friendly
cd skills/python-dataviz
python3 -m venv .venv
source .venv/bin/activate
pip install .
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')
Distribution/Statistical:
plt.hist() or sns.histplot()sns.boxplot()sns.violinplot()sns.kdeplot()Comparison:
plt.bar() or sns.barplot()sns.barplot(hue=...)plt.barh() or sns.barplot(orient='h')Relationship:
plt.scatter() or sns.scatterplot()plt.plot() or sns.lineplot()sns.regplot() or sns.lmplot()Heatmaps:
sns.heatmap(df.corr())plt.imshow() or sns.heatmap()Interactive:
plotly.express or plotly.graph_objectsplt.figure(figsize=(10, 6)) # Width x Height in inches
plt.savefig('output.png', dpi=300) # Publication: 300 dpi, Web: 72-150 dpi
# 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']
# 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
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
# 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')
See references/ for detailed guides:
See scripts/ for ready-to-use examples:
scripts/bar_chart.py - Bar and grouped bar chartsscripts/line_chart.py - Line plots with multiple seriesscripts/scatter_plot.py - Scatter plots with regressionscripts/heatmap.py - Correlation heatmapsscripts/distribution.py - Histograms, KDE, violin plotsscripts/interactive.py - Plotly interactive chartsimport 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)
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)
import numpy as np
x = np.linspace(0, 10, 100)
y = np.sin(x)
plt.plot(x, y)
plt.savefig('output.png', dpi=300)
"No module named matplotlib"
cd skills/python-dataviz
source .venv/bin/activate
pip install -r requirements.txt
Blank output / "Figure is empty"
plt.savefig() comes AFTER plotting commandsplt.show() for interactive viewing during developmentLabels 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
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)
Generated Mar 1, 2026
Create static and interactive charts for quarterly financial reports, including bar charts for revenue breakdowns, line plots for trend analysis, and heatmaps for expense correlations. Supports export to PNG for presentations and HTML for internal web dashboards.
Generate publication-quality statistical plots such as violin plots for data distribution comparisons, scatter plots with regression lines for correlation studies, and multi-panel figures for experimental results. Ideal for academic papers and lab reports.
Design interactive charts for campaign performance dashboards, using plotly for hover tooltips and animations to engage stakeholders. Includes bar charts for conversion rates and heatmaps for customer segmentation data.
Visualize patient data with distribution plots like histograms and KDE for demographic analysis, and box plots for clinical trial outcomes. Supports static SVG exports for medical publications and interactive HTML for internal review.
Produce line charts for sales trends over time, grouped bar charts for product category comparisons, and interactive plotly charts for real-time dashboard updates. Helps in inventory and performance tracking.
Offer data visualization consulting to businesses, providing custom chart development, training on best practices, and integration with existing data pipelines. Revenue is generated through hourly rates or project-based contracts.
Develop a software-as-a-service platform that uses this skill to generate automated reports and interactive dashboards for clients. Revenue comes from subscription tiers based on features like export formats and data volume.
Create and sell online courses, tutorials, or templates focused on data visualization with Python. Revenue is generated through course sales, licensing of pre-built chart scripts, or affiliate marketing with data tools.
š¬ Integration Tip
Integrate with data sources like CSV files or pandas DataFrames; use virtual environments to manage dependencies and ensure consistent output across projects.
Use the @steipete/oracle CLI to bundle a prompt plus the right files and get a second-model review (API or browser) for debugging, refactors, design checks, or cross-validation.
Manage Things 3 via the `things` CLI on macOS (add/update projects+todos via URL scheme; read/search/list from the local Things database). Use when a user asks Clawdbot to add a task to Things, list inbox/today/upcoming, search tasks, or inspect projects/areas/tags.
Local search/indexing CLI (BM25 + vectors + rerank) with MCP mode.
Use when designing database schemas, writing migrations, optimizing SQL queries, fixing N+1 problems, creating indexes, setting up PostgreSQL, configuring EF Core, implementing caching, partitioning tables, or any database performance question.
Connect to Supabase for database operations, vector search, and storage. Use for storing data, running SQL queries, similarity search with pgvector, and managing tables. Triggers on requests involving databases, vector stores, embeddings, or Supabase specifically.
Query, design, migrate, and optimize SQL databases. Use when working with SQLite, PostgreSQL, or MySQL ā schema design, writing queries, creating migrations, indexing, backup/restore, and debugging slow queries. No ORMs required.