"creating-react-recharts-visualizations"
"Creates interactive data visualizations using Recharts library in React/TypeScript. Use for building line charts, bar charts, and time series with custom styling and interactivity."
Creating React Recharts Visualizations
Overview
Creates production-ready React components using the Recharts library for data visualization. Specializes in time series line charts and state-level bar charts with TypeScript support, custom tooltips, error bars, and interactive features.
When to Use
- Building interactive data visualizations in React applications
- Creating time series charts with confidence intervals
- Displaying state-level or categorical bar charts
- Requiring TypeScript-safe chart components
- Need customizable tooltips, formatting, and styling
Prerequisites
Required packages:
If using shadcn/ui components:
TypeScript: All components use TypeScript with strict typing.
Bundled Resources
References (references/)
Load these when implementing specific chart types or needing detailed guidance:
- data-structures.md - Complete TypeScript interfaces for all data shapes
- time-series-patterns.md - Line chart implementation patterns and examples
- bar-chart-patterns.md - Bar chart patterns with sorting/filtering
- three-way-interaction-patterns.md - Faceted dot whisker plots for complex interactions with confidence intervals
- confidence-intervals-facets.md - Faceted time series with discrete error bars and continuous confidence bands
- statistical-charts-guide.md - Forest plots and main effects visualizations for regression results and meta-analysis
- styling-guide.md - Visual design standards and color schemes
- formatting-rules.md - Number/date formatting rules and helpers
- testing-guide.md - Validation checklist and edge cases
Assets (assets/)
Production-ready components organized by complexity:
Basic Charts (assets/basic/):
- time-series-template.tsx - Line chart with error bars and confidence intervals
- time-series-example.ts - Sample time series data
- TimeSeriesChart.tsx - Enhanced time series with multiple features
- bar-chart-template.tsx - Horizontal bar chart with interactivity
- bar-chart-example.ts - Sample bar chart data
- StateBarChart.tsx - State-level comparison bar charts
Statistical Visualizations (assets/statistical/):
- forest-plot.tsx - Forest plots for odds ratios, meta-analysis, regression coefficients
- main-effects-plot.tsx - Main effects visualization with confidence intervals
Advanced Charts (assets/advanced/):
- three-way-interaction-template.tsx - Faceted dot whisker plot for 3-way interactions
- three-way-interaction-example.ts - Sample interaction data
- faceted-discrete-ci-template.tsx - Faceted time series with discrete confidence intervals (error bars)
- faceted-continuous-bands-template.tsx - Faceted time series with continuous confidence bands (shaded areas)
- DualAxisChart.tsx - Dual Y-axis time series with recession periods and time range controls
Specialized Charts (assets/specialized/):
- AbortionOpinionChart.tsx - Survey opinion visualization with demographic filtering
Core Workflow
Step 1: Identify Chart Type
Line Chart with Time Series:
- Yearly/temporal data
- Trend visualization
- Confidence intervals or error bars
- See
references/time-series-patterns.md
Horizontal Bar Chart:
- State-level comparisons
- Categorical rankings
- Interactive sorting/filtering
- See
references/bar-chart-patterns.md
Faceted Time Series with Confidence Intervals:
- Comparing multiple groups/demographics side-by-side
- Survey data across categories (age groups, regions, etc.)
- Discrete confidence intervals (error bars) for periodic measurements
- Continuous confidence bands (shaded areas) for trend visualization
- See
references/confidence-intervals-facets.md
Statistical Charts:
- Forest plots for meta-analysis and regression coefficients
- Main effects plots with confidence intervals
- Odds ratio visualizations
- See
assets/statistical/
Advanced Charts:
- Three-way interaction plots (faceted dot whisker)
- Dual Y-axis time series with annotations
- Recession period overlays and time range controls
- See
assets/advanced/
Specialized Visualizations:
- Domain-specific survey charts
- Custom filtering and demographic breakdowns
- See
assets/specialized/
Step 2: Structure Data
Data MUST match the TypeScript interfaces defined in references/data-structures.md.
Critical: Validate data structure before rendering to prevent runtime errors.
Step 3: Generate Component
Use templates from assets/ directory organized by type:
Basic:
assets/basic/time-series-template.tsx- Line charts with error barsassets/basic/bar-chart-template.tsx- Horizontal bar chartsassets/basic/StateBarChart.tsx- State-level comparisons
Statistical:
assets/statistical/forest-plot.tsx- Forest plots for odds ratiosassets/statistical/main-effects-plot.tsx- Main effects with CIs
Advanced:
assets/advanced/three-way-interaction-template.tsx- 3-way interactionsassets/advanced/DualAxisChart.tsx- Dual Y-axis time series
Specialized:
assets/specialized/AbortionOpinionChart.tsx- Survey visualizations
Step 4: Customize Styling
Apply consistent styling patterns:
- Colors: Use neutral palette (black/gray) for professional appearance
- Fonts: System font stack with size hierarchy
- Spacing: Consistent margins using Recharts margin props
- See
references/styling-guide.md
Step 5: Add Interactivity
Implement standard interactive features:
- Custom tooltips with formatted values
- Hover states
- Sorting controls (bar charts)
- Search/filter (bar charts)
- Expand/collapse (bar charts)
Quick Reference
Essential Props Pattern
Common Axis Configurations
Numeric X-Axis (years):
Percentage Y-Axis:
Value Formatting Pattern
ALWAYS format large numbers with abbreviations:
Faceted Charts Pattern
Render multiple charts side-by-side for group comparisons:
Continuous Confidence Bands Pattern
Use stacked areas in ComposedChart for shaded confidence bands:
Critical Requirements
Data Validation
ALWAYS validate for duplicate keys:
Error Bars
When displaying confidence intervals, use standard_error with 95% CI:
Responsive Design
ALWAYS wrap charts in ResponsiveContainer:
Animation
Disable animations for data-heavy charts:
Component Organization
Common Patterns
Metadata-Driven Formatting
Extract formatting rules from metadata:
Conditional Rendering
Handle missing/null data gracefully:
Custom Tooltips
Create informative, styled tooltips:
See Also
Implementation Guides (load as needed):
references/time-series-patterns.md- Complete time series implementationreferences/bar-chart-patterns.md- Bar chart with sorting/filteringreferences/data-structures.md- TypeScript interface definitionsreferences/styling-guide.md- Consistent visual stylingreferences/formatting-rules.md- Value formatting standardsreferences/testing-guide.md- Validation and testing checklist
Copy-Paste Ready Templates:
assets/time-series-template.tsx- Production line chart componentassets/bar-chart-template.tsx- Production bar chart componentassets/time-series-example.ts- Sample time series dataassets/bar-chart-example.ts- Sample bar chart data
Troubleshooting
Chart not rendering?
- Verify data structure matches TypeScript interfaces
- Check for null/undefined values in required fields
- Ensure ResponsiveContainer has explicit height
Duplicate key errors?
- Validate unique keys before rendering
- Check for duplicate years/categories in data
Formatting issues?
- Confirm metadata structure matches expected format
- Verify prefix/suffix are strings (not objects)
- Test with edge cases (very large/small numbers)