| name | data-viz-studio |
| description | Create beautiful, interactive data visualizations and dashboards. Use for chart creation, data exploration, visual analytics, and building dashboards from CSV/Excel/JSON data. Handles line charts, bar charts, scatter plots, heatmaps, and complex multi-chart dashboards with professional styling. |
Data Visualization Studio
Create publication-ready, interactive data visualizations with comprehensive charting capabilities and professional styling.
When to Use This Skill
Use this skill when the user requests:
- Creating charts or graphs from data
- Building interactive dashboards
- Visualizing CSV, Excel, or JSON data
- Comparing data trends or patterns
- Exploring correlations or distributions
- Creating business intelligence visualizations
- Generating reports with visual analytics
Quick Start Workflow
- Understand requirements - Determine chart type, data source, and styling preferences
- Prepare data - Use
preprocess_data.pyfor cleaning and transformation - Create visualization - Use
create_chart.pyor write custom Plotly code - Apply styling - Reference
styling.mdfor professional themes - Export - Generate HTML for interactivity or PNG for static images
Scripts
create_chart.py
Generate interactive charts from DataFrames or CSV files with minimal code.
Supported chart types:
line- Time series and trendsbar- Categorical comparisonsscatter- Relationships and correlationspie- Composition (use sparingly)histogram- Distributionsbox- Statistical distributionsheatmap- 2D patterns and correlationsarea- Cumulative values over time
Command line usage:
python scripts/create_chart.py data.csv line date revenue output.html
Python usage:
import pandas as pd
from scripts.create_chart import create_chart, save_chart
# Load data
df = pd.read_csv('data.csv')
# Create chart
fig = create_chart(
data=df,
chart_type='line',
x='date',
y='revenue',
color='category', # Optional grouping
title='Revenue Over Time',
theme='plotly' # or 'plotly_dark', 'seaborn', 'simple_white'
)
# Save chart
save_chart(fig, 'chart.html', format='html')
Advanced options:
- Add
sizeparameter for scatter plots to scale point sizes - Pass additional kwargs for chart-specific customization
- Use
colorfor grouping by category - Apply different themes for various contexts
preprocess_data.py
Handle data cleaning, transformation, and aggregation before visualization.
Key functions:
from scripts.preprocess_data import *
# Load data from various formats
df = load_data('data.csv') # Also supports .xlsx, .json, .parquet
# Clean data
df = clean_data(df, drop_na=False, fill_value=0)
# Transform dates
df = transform_dates(df, date_columns=['created_at', 'updated_at'])
# Aggregate data
df_agg = aggregate_data(
df,
group_by=['category', 'region'],
agg_dict={'revenue': 'sum', 'orders': 'count'},
sort_by='revenue',
ascending=False
)
# Create pivot table for heatmaps
pivot = create_pivot_table(df, index='month', columns='category', values='sales')
# Calculate moving averages for time series
df = calculate_moving_average(df, column='daily_sales', window=7)
# Bin numerical data
df = bin_numerical(df, column='age', bins=5, labels=['18-25', '26-35', '36-45', '46-55', '56+'])
Command line usage:
python scripts/preprocess_data.py input.csv output.csv
Reference Guides
Chart Types (references/chart_types.md)
Comprehensive guide on selecting appropriate chart types for different data scenarios. Read this when:
- User's chart type choice is unclear
- Need guidance on which visualization best suits the data
- Comparing options for a specific analysis need
- Understanding when to use specialized charts
Key sections:
- Chart selection guide with use cases
- Best practices for each chart type
- Common chart combinations for dashboards
- Drill-down patterns for interactive analysis
Styling (references/styling.md)
Professional styling and theming guidelines. Read this when:
- Creating publication-ready visualizations
- Building branded dashboards
- Ensuring accessibility and readability
- Exporting high-quality images
- Applying consistent design across multiple charts
Key sections:
- Color palettes (categorical, sequential, diverging)
- Typography recommendations
- Layout templates (minimal, dark mode, professional)
- Customization patterns (hovers, grids, annotations)
- Accessibility guidelines
- Export settings for different formats
Assets
dashboard_template.html
Professional dashboard template with responsive design. Use this when:
- Building multi-chart dashboards
- Creating executive summaries
- Presenting KPIs alongside visualizations
- Need a quick start for dashboard layouts
Features:
- Responsive grid layout
- KPI card sections
- Four chart placeholders
- Professional styling
- Mobile-friendly design
To use:
- Copy template to working directory
- Modify KPI values and labels
- Replace chart data with actual data
- Customize colors and branding as needed
Common Patterns
Pattern 1: Single Chart from CSV
import pandas as pd
from scripts.create_chart import create_chart, save_chart
df = pd.read_csv('sales_data.csv')
fig = create_chart(df, 'bar', x='product', y='revenue', title='Product Revenue')
save_chart(fig, 'product_revenue.html')
Pattern 2: Time Series with Moving Average
from scripts.preprocess_data import load_data, calculate_moving_average
from scripts.create_chart import create_chart, save_chart
import plotly.graph_objects as go
df = load_data('daily_metrics.csv')
df = calculate_moving_average(df, 'value', window=7)
# Create figure with both raw and smoothed data
fig = go.Figure()
fig.add_trace(go.Scatter(x=df['date'], y=df['value'], name='Daily', line=dict(color='lightgray')))
fig.add_trace(go.Scatter(x=df['date'], y=df['value_ma7'], name='7-day MA', line=dict(color='#636EFA', width=3)))
save_chart(fig, 'time_series.html')
Pattern 3: Multi-Category Dashboard
from scripts.preprocess_data import load_data, aggregate_data
from scripts.create_chart import create_chart
import plotly.graph_objects as go
from plotly.subplots import make_subplots
df = load_data('sales.csv')
# Create multi-chart dashboard
fig = make_subplots(
rows=2, cols=2,
subplot_titles=('Revenue by Region', 'Top Products', 'Monthly Trend', 'Category Mix')
)
# Add charts to subplots
# ... (add traces to each subplot)
fig.update_layout(height=800, showlegend=True)
fig.write_html('dashboard.html')
Pattern 4: Correlation Heatmap
from scripts.preprocess_data import load_data
import plotly.express as px
df = load_data('metrics.csv')
correlation = df.corr()
fig = px.imshow(
correlation,
labels=dict(color="Correlation"),
x=correlation.columns,
y=correlation.columns,
color_continuous_scale='RdBu',
aspect='auto'
)
fig.update_layout(title='Metric Correlations')
fig.write_html('correlation_heatmap.html')
Best Practices
Data Preparation
- Always clean data before visualization (handle nulls, duplicates)
- Transform dates to proper datetime format
- Aggregate large datasets to reduce noise
- Consider binning continuous variables for clarity
Chart Selection
- Use line charts for trends over time
- Use bar charts for categorical comparisons
- Use scatter plots to show relationships
- Limit pie chart categories to 5 or fewer
- Consider audience and purpose when selecting type
Styling
- Apply consistent color schemes across dashboard
- Ensure text is readable (proper font sizes)
- Use white space effectively
- Add titles, axis labels, and legends
- Include annotations for key insights
- Test colorblind accessibility
Performance
- Aggregate data before plotting large datasets
- Use appropriate chart types (avoid complex charts for simple data)
- Consider file size for web dashboards
- Optimize hover templates for clarity
Interactivity
- Enable hover information with relevant details
- Use appropriate mode bar options
- Consider adding drill-down capabilities
- Test responsiveness on different screen sizes
Troubleshooting
Issue: Chart appears empty or shows no data
- Verify data is loaded correctly (
df.head()) - Check column names match parameters
- Ensure data types are appropriate (dates as datetime, numbers as numeric)
Issue: Colors look washed out or unclear
- Reference
styling.mdfor better color palettes - Ensure sufficient contrast between elements
- Test with colorblind simulation
Issue: Labels overlap or are cut off
- Adjust margins in layout
- Rotate x-axis labels if needed
- Consider abbreviating long labels
- Increase figure size
Issue: Chart is slow or unresponsive
- Reduce data points (aggregate or sample)
- Simplify chart type
- Disable unnecessary features (grid, annotations)
Example Queries This Skill Handles
- "Create a line chart showing sales over time"
- "Build a dashboard with revenue metrics"
- "Visualize the correlation between price and demand"
- "Show me a breakdown of customers by region"
- "Make an interactive chart from this CSV"
- "Create a professional-looking bar chart comparing products"
- "Analyze trends in this time series data"
- "Build a heatmap of weekly patterns"