Veusz: publication figures without a licence
What Veusz is
Veusz is a scientific plotting application for producing figures that are meant to be published rather than glanced at. It reads data from text files, CSV exports, FITS files and HDF5 or NumPy archives, then assembles a figure from a hierarchy of objects: a page contains grids, a grid contains graphs, a graph contains axes, keys and one or more plots, and a plot is bound to a dataset. Every element has editable properties, from the position of a tick mark to the dash pattern of an error bar, and the whole document can be saved for reuse. Because it is written in Python and ships as an importable module, the same code that draws a figure interactively can generate a hundred of them in a batch script.
How the figure-building workflow runs
The usual route starts with importing data, which can be done by dragging a file in or by pointing the import dialog at a directory of measurements. Veusz keeps imported datasets in a tree and lets you derive new ones with expressions: subtracting a background column, converting units, filtering outliers, computing a histogram, or combining two runs. The figure itself is then assembled visually. You add a graph to the page, choose the axes, and add plots: scatter and line series, bars, box plots, error-bar carries, contours and colour maps for two-dimensional data, vector fields for flow measurements, and three-dimensional scatter, surface and function plots. Legends, annotations, arrows and images are separate widgets that can be positioned precisely.
Formatting is where the program earns its keep. Axis ranges can be fixed, logarithmic, or set to show only a region of interest, tick positions can be specified manually, colour maps can be edited or loaded from files, and text uses proper mathematical markup for units and symbols. Linked datasets mean that re-running an export after new measurements arrive updates the figure automatically rather than requiring a rebuild. Export covers PDF, PostScript, EPS, SVG, EMF and PNG, at arbitrary resolution, so the same document serves a journal submission and a slide deck.
Settings, scripting and limits
Veusz is a plotting program, not a statistics package. It can compute simple fits and derived quantities through dataset expressions, but regression modelling, hypothesis testing and mixed-effects analysis belong elsewhere, and results from other tools usually arrive as columns to be plotted. The widget tree that gives such fine control also gives a learning curve: newcomers often fight the difference between page, grid and graph coordinates, and repositioning a single label can take several attempts until the model clicks. Interactive editing of very large datasets is slower than a dedicated plotting library, and there is no live data acquisition or instrument control. Three-dimensional rendering is adequate for figures but nowhere near a volume visualisation package, and there is no animation or interactive scene exploration.
Who should choose something else
If your output is generated automatically inside a Python analysis pipeline, a plotting library will fit more naturally and is easier to version control. If you need statistical analysis in the same window as the graph, a statistics-oriented graphing package is a better single tool. And if you are visualising volumetric simulation results rather than producing a two-dimensional figure, a dedicated scientific visualisation application is the right instrument. Veusz is the pragmatic choice when the figure must be exact, reproducible and publication ready without buying a licence.
- Best for
- Researchers, students and engineers who need precise, reproducible publication figures and are happy to automate the same task from Python.
- Good to know
- It plots rather than analyses, the widget-tree layout takes practice, and figures can be regenerated from scripts for batch output in several formats.
How to get started
- Download the Windows installer from the official Veusz release page and run it. Python and the plotting engine are included.
- Import measurements with the data import dialog, which reads text, CSV, FITS, HDF5 and NumPy files and previews them before committing.
- Add a page, place a grid on it and add a graph inside the grid; each level controls position and size separately.
- Add a plot to the graph, bind it to a dataset and choose the style: line, markers, bars, contours, colour maps or a 3D plot.
- Refine axes, ticks, labels, legend and annotations in the properties panel, using dataset expressions for unit conversions and derived columns.
- Export to PDF, SVG, EPS or PNG at the resolution you need, and save the document so the figure can be regenerated when data changes.
Questions & answers
Can I generate figures without clicking?
Yes. Veusz imports as a Python module, so a script can rebuild the same figure repeatedly, and the command line can export documents in batch.
Does it do statistical analysis?
Only in a limited way. Dataset expressions cover arithmetic, filtering and simple fits; regression modelling needs a statistics package.
Which export formats are available?
PDF, PostScript, EPS, SVG, EMF and PNG are supported at arbitrary resolution, so one document serves both print and screen.