Python Dataviz
VerifiedProfessional data visualization using Python (matplotlib, seaborn, plotly). Create publication-quality static charts, statistical visualizations, and interac...
$ Add to .claude/skills/ About This Skill
# 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
```bash cd skills/python-dataviz python3 -m venv .venv source .venv/bin/activate pip install . ```
Create a Chart
```python 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 ```python 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 ```python # 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 ```python # 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 ```python 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 ```python # 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 ```python 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 ```python 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 ```python 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" ```bash 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 ```python plt.tight_layout() # Add before plt.savefig() # Or plt.savefig('output.png', bbox_inches='tight') ```
Low resolution output ```python plt.savefig('output.png', dpi=300) # Not 72 or 100 ```
Environment
The skill includes a venv with all dependencies. Always activate before use:
```bash cd /home/matt/.openclaw/workspace/skills/python-dataviz source .venv/bin/activate ```
Dependencies: matplotlib, seaborn, plotly, pandas, numpy, kaleido (for plotly static export)
Use Cases
- Create data visualizations and charts using Python plotting libraries
- Generate Python scripts from natural language descriptions
- Write Python code following best practices and idiomatic patterns
- Debug and optimize Python scripts for correctness and performance
- Create Python-based automation scripts for data processing tasks
Pros & Cons
Pros
- +Well-adopted with 3,829+ downloads showing reliable real-world usage
- +Well-structured approach ensures consistent and reliable results
- +Integrates smoothly into existing workflows
Cons
- -Requires installing external dependencies before use
- -Focused scope means it may not cover edge cases outside its primary use case
- -May require adaptation for non-standard project configurations
FAQ
What does Python Dataviz do?
What platforms support Python Dataviz?
What are the use cases for Python Dataviz?
100+ free AI tools
Writing, PDF, image, and developer tools — all in your browser.
Next Step
Use the skill detail page to evaluate fit and install steps. For a direct browser workflow, move into a focused tool route instead of staying in broader support surfaces.