Python Dataviz

Professional data visualization using Python (matplotlib, seaborn, plotly). Create publication-quality static charts, statistical visualizations, and interac...

MIT-0 · Free to use, modify, and redistribute. No attribution required.
3 · 4.2k · 43 current installs · 44 all-time installs
MIT-0
Security Scan
VirusTotalVirusTotal
Benign
View report →
OpenClawOpenClaw
Benign
high confidence
Purpose & Capability
Name/description match the included examples, reference docs, and pyproject dependencies (matplotlib, seaborn, plotly, pandas, numpy, kaleido). The six example scripts implement the stated functionality (static and interactive charts) and do not request unrelated capabilities.
Instruction Scope
SKILL.md instructs the agent to create plots, install the package in a virtualenv, and read CSVs when provided — this is within scope. Minor inconsistencies: troubleshooting suggests 'pip install -r requirements.txt' though no requirements.txt is present (dependencies are in pyproject.toml). SKILL.md appears truncated in the provided listing but the visible instructions are constrained to plotting tasks and file exports only.
Install Mechanism
No install spec in registry (instruction-only), and the repo contains a normal pyproject.toml for packaging. There are no downloads from arbitrary URLs, no extract-and-run steps, and no creation of binaries in unusual locations.
Credentials
The skill requests no environment variables, credentials, or config paths. The scripts read/produce local data files (CSV input, PNG/SVG/HTML output) which is expected for a visualization toolkit and proportionate to the stated purpose.
Persistence & Privilege
Flags are default (always:false, user-invocable:true); the skill does not request persistent system privileges, nor does it modify other skills or system-wide configuration in the provided files.
Assessment
This package appears to be a straightforward Python data-visualization skill. If you plan to install/run it: (1) run it inside an isolated virtual environment, as suggested, to avoid polluting your system Python; (2) verify the pyproject.toml dependencies and ensure you want to install those packages (matplotlib, seaborn, plotly, pandas, numpy, kaleido); (3) note the minor doc mismatch ('requirements.txt' referenced but not present) — use pip install . or pip install -e . as appropriate; (4) if provenance matters, check the GitHub repository URL in pyproject.toml to confirm the publisher and inspect upstream source history; and (5) open any generated HTML files locally rather than hosting them without review. Overall the skill is internally coherent and consistent with its stated purpose.

Like a lobster shell, security has layers — review code before you run it.

Current versionv1.0.0
Download zip
latestvk973p24p0413em2vpq4v05k1bh8162hk

License

MIT-0
Free to use, modify, and redistribute. No attribution required.

SKILL.md

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)

Files

11 total
Select a file
Select a file to preview.

Comments

Loading comments…