Back to Charts

Scientific Chart Selection Cheat Sheet

When to use each chart type and how to create it in Python

plotivy.app|The AI Chart Generator for Science

1Comparison Charts

Chart TypeUse WhenMatplotlib FunctionSeaborn Function
Bar ChartComparing discrete categoriesax.bar()sns.barplot()
Grouped BarComparing categories across groupsax.bar() with x offsetssns.barplot(hue=)
Lollipop ChartOrdered comparisons, cleaner than barsax.stem()
Dot PlotComparing ranked valuesax.scatter()sns.stripplot()
Radar ChartComparing multiple metricsax.plot() on polar

2Distribution Charts

Chart TypeUse WhenMatplotlib FunctionSeaborn Function
HistogramSingle variable distributionax.hist()sns.histplot()
KDE PlotSmooth distribution estimateax.fill_between()sns.kdeplot()
Box PlotMedian, IQR, outliersax.boxplot()sns.boxplot()
Violin PlotDistribution shape + box plotsns.violinplot()
Strip/JitterIndividual data points on groupsax.scatter() + jittersns.stripplot()
ECDFCumulative distributionManual computationsns.ecdfplot()
Ridge PlotMultiple group distributionsManual + fill_betweenvia joypy

3Relationships

  • Scatter Plot
    Two continuous variables
    ax.scatter() | sns.scatterplot()
  • Scatter w/ Regression
    Correlation + trend line
    ax.scatter() + polyfit | sns.regplot()
  • Heatmap
    Matrix of correlations
    ax.imshow() | sns.heatmap()
  • Pairplot
    All pairwise relationships
    Manual subplot | sns.pairplot()

4Time Series

  • Line Chart
    Continuous time series
    ax.plot() | sns.lineplot()
  • Area Chart
    Cumulative / stacked over time
    ax.fill_between()
  • Dual Y-Axis
    Two variables, different scales
    ax.twinx()
  • Multi-Panel (Shared X)
    Multiple metrics, aligned time
    plt.subplots(sharex=True)

5Biomedical & Specialized

Kaplan-Meier
Survival analysis
lifelines.KaplanMeierFitter
ROC Curve
Classifier performance
sklearn.metrics.roc_curve
Forest Plot
Meta-analysis effect sizes
import forestplot
IR Spectrum
Infrared spectroscopy
ax.invert_xaxis() required

!Common Mistakes to Avoid

  • Pie chart for >5 categories: Extremely hard to read proportions.
  • 3D bar chart in 2D print: Always looks misleading and distorts data.
  • Jet/rainbow colormaps: Not perceptually uniform or colorblind-safe (use viridis).
  • Reversing colormap: Use _r suffix like viridis_r correctly.
  • Bad Dual Y-axis: Only use when variables share an identical X-axis.

Formats & Exporting (DPI)

Journal Print: 300+ DPI
Line Art: 600-1200 DPI
Web/Screen: 96-150 DPI
Formats: PDF, SVG, TIFF
plt.tight_layout()
plt.savefig('figure.pdf', dpi=300, bbox_inches='tight')