A 2D vector and scalar field plotter
Featuring:
- Line Integral Convolution (LIC) on the data.
- Curvilinear scaled arrows following the flow lines.
- Mixed mode: scalar field map with overlaid vector field.
- Missing data are handled and do not interfere with the flow lines.
- Generation of Scalable Vector Graphics (SVG) files, which are easily editable and convertible while preserving the best quality for inclusion in a PDF scientific article.
- The color palette is designed so the flows are uniformly readable when printed as grey scale.
Download
Packages of vsfplot version 1.1 can be downloaded as tar.gz or zip formats.
Both contain the same files, including:
- The source code.
- A linux 64 bits statically compiled binary (no need for extra dependencies).
- A windows 32 bits vsfplot.exe (also statically compiled, no need for extra DLLs)
Linux/64 bits is the reference platform, from which I also cross-compiled the windows executable for your convenience. vsfplot is a free/libre software released under LGPL v2.1 or more recent.
Usage
"vsfplot data.txt test" produces two files: "test.svg" and "test_legend.svg", examples of which are displayed above.
# Comments starting with # are ignored, as well as blank lines # Columns are by default in this order: x y vector_x vector_y scalar # x and y values shall be specified at grid points, possibly with missing values. 0.05 0.25 0.0219881 0.0189318 0.953802 0.05 0.35 0.023919 0.0166145 1.04089 0.05 0.45 0.0241417 0.0153331 1.04686 ...
You can specify which columns to use in case the file contains many colums. Vsfplot can display scalar maps as well (x, y, value), or a mixed mode with a vector field displayed on top of a scalar map (x, y, vx, vy, value). In the (x, y, vx, vy) 4-column mode, the scalar values are set to the vector norms. See the full usage below.
The output files are produced in Scalable Vector Graphics (SVG) format. You can easily convert these to any bitmap format (PNG, JPEG...), vector format (PS, PDF...), edit these files (including extracting the images or changing the arrows, etc.) using the excellent free/libre software Inkscape. Vector formats are preferred for better quality in scientific articles.
vsfplot [--options args ...] data_file output_base_name
Options can be specified in any order:
-d [ --data ] arg The data file, which can also be specified as the
first free parameter on the command line (no need
for the --data option). This is a simple ascii
multi-column file, see --using. Use the special
name - for stdin.
-o [ --output ] arg The output files base name, which can also be
specified as the second free parameter on the
command line (no need for the --output option). Two
SVG files are generated, one is base_name.svg for
the generated color map / vector field, and the
other is base_name_legend.svg for the associated
legend. The size of the generated image is set to
the number of distinct X and Y values. If this does
not suit your needs you may easily rescale the SVG
file in a SVG editor (tip: try Inkscape), or use
the zoom factor (see below). If this is not enough
you'll have to resample your data file before
passing it to this program.
-u [ --using ] arg Specify which columns to use for plotting, default
is 1:2:3 for a 3-column file, 1:2:3:4 for a
fourth-column file, and 1:2:3:4:5 otherwise. The
first value indicate which column holds the X
coordinates, the second value the Y coordinates.
The program assumes the X and Y data are regularly
spaced, possibly with missing values. If only three
values are specified a scalar color map is built.
If 4 values are specified a vector field is built
using the third and fourth values as the vector
coordinates at each X,Y position, and the color is
set according to the vector norm. If a fifth value
is given then it is used for building a scalar
color map, while fields 3 and 4 are still used as
vector coordinates for plotting the arrows on top
of that map.
-x [ --xrange ] arg The range of the X values, specified as min:max.
The default is to use the min and max in the file.
Data values outside this range are ignored.
-y [ --yrange ] arg The range of the Y values, specified as min:max.
The default is to use the min and max in the file.
Data values outside this range are ignored.
-r [ --scalar_range ] arg The range of the scalar data, specified as min:max.
The default is to use the min and max in the file,
but you can specify a different range, for example
to have comparable colors across different figures.
Values outside the range are clamped to the
min/max.
-a [ --arrows_range ] arg The range of the arrow lengths for the vector data,
specified as min:max. The default is to set the
arrow of a median normed vector to half the grid
size. Here min and max specify the norm below which
no arrow is displayed, and the norm above which the
arrow is clamped to the grid size, with the average
set to half the grid size. This option is mainly
useful to have comparable arrow lengths across
different figures
-b [ --boundary_values ] There is one pixel per value, regularly spaced.
Default is to set each value at a pixel center. If
this option is set, the data min and max correspond
to the left/low boundaries of the first and last
pixels.
-z [ --zoom ] arg If set, each value in the data file is duplicated
that many times along the X and Y directions. This
effectively enlarges pixels. Only integer values
are allowed, no interpolation is performed, see
--output above.
-c [ --config ] arg If specified, add all parameters from this
configuration file in addition to the command-line
arguments. The file syntax is one option=value per
line, # are comments and blank lines are ignored.
In case of duplicated values, the command-line
arguments take precedence.
-s [ --silent ] Do not display warning messages.
-h [ --help ] Display this help
.



