Plot viewport
Upload datasets and add traces to begin
Upload datasets and add traces to begin
Combine one or more CSV datasets into a single publication-quality plot, style every detail, then export as PNG/SVG or copy the matplotlib code to reproduce it in Python.
Drop one or more CSV files (each needs a header row and at least two columns), or click Load sample dataset to try it instantly.
Each trace maps a file's X column against a Y column. Add multiple traces (even from different files) to overlay them, and set each one's name, colour and style.
Set titles and axis labels, toggle log scales, gridlines and the boxed frame, then fine-tune typography, marker/line sizes and the legend in Typography & style.
Set export width/height/scale, then download PNG or SVG. Or click Python to copy runnable matplotlib code that recreates the figure from your data.
A few conventions that make scientific figures clearer and more honest.
An axis without units is ambiguous. Write the quantity and its unit, e.g. Time (s) or Concentration (mM). The X/Y label fields feed both the on-screen plot and the exported matplotlib code.
A log axis linearises exponential or power-law data and shows several orders of magnitude at once, but it can flatter noisy data. Use it when the process is multiplicative, and say so in the caption.
Around 8% of men have some colour-vision deficiency, and many journals print in greyscale. Prefer palettes that vary in lightness as well as hue, and distinguish traces by line style or markers too, not colour alone.
The Python export means a figure isn't a dead end: the generated matplotlib script regenerates the plot from the same CSV, so you can version-control it alongside your analysis. Everything runs in your browser, no data leaves your machine.