The SVG format is the Grand Central Station of vector graphics, with branch lines to PDF and other compatible formats like Adobe Illustrator, EPS, and xfig.
1 Inkscape
Open source Inkscape can do everything, although I find its Adobe Illustrator pretensions (perhaps unfairly) grating. It’s aimed primarily at general vector graphic design, which means the functions I want for sciency stuff are not front-and-centre, but it can be done.
2 Boxy
A fresh option leveraging web technology is Jarosław Foksa’s Boxy, a web app with pseudo-desktop apps for various platforms. I think it is free, but closed source?
3 Processing
Java-based visual wrangling system Processing can generate SVGs.
4 Converting formats
4.1 Inkscape
Inkscape can convert between many formats, including SVG, PDF, EPS, and PNG. It can also be used to convert between vector formats. To convert a PDF to SVG, use the command line:
Although this requires the massive Inkscape GUI to be installed, its results are consistent and high quality, so it’s what I tend to do in practice.
4.2 pdf2svg
pdf2svg is handy in conjunction with (almost) any of the other programs to convert between vector formats.
5 SVG-render
Go to SVG to JPEG/PNG to render a PNG. Docs here.
5.1 dvisvgm
dvisvgm converts DVI files (e.g. mathematics, tikz) to SVG.
6 Algorithmically generating SVG
Javascript is very good at SVG wrangling. Over at javascript graphics I have a list of libraries for generating SVGs, including Two.js, snap, etc.
More generally, any procedural diagram system can be converted to SVG.
Carlier et al. (2020)
SuperformulaSVG for web/jasonwebb/SuperformulaSVG-for-web: A generative line art web app using the 2D superformula, with support for SVG and raster exporting
7 Libraries of line art
8 Minimising size of
9 Vectorizing raster graphics
9.1 Vectorizer.ai
Currently free, Vectorizer.AI produces high-quality results.
9.2 potrace
The classic Potrace converts bitmap images to SVG. Apparently, it is integrated into Inkscape.