2023-01-25    Share on: Twitter | Facebook | HackerNews | Reddit

Programatic Diagram Generation


There are several ways to represent diagrams in text format, including:

  1. Ascii art: This is a form of drawing using characters from the ASCII character set, such as +, -, and | to create simple diagrams.

  2. Graphviz: This is an open-source graph visualization software that can be used to create diagrams using a simple text-based language.

  3. PlantUML: This is a tool that allows users to create UML diagrams using a simple text-based language.

  4. Mermaid: This is a simple markdown-like language for generating diagrams and flowcharts.

  5. LaTeX Tikz: This is a powerful and flexible graphics package for TeX/LaTeX. It allows the creation of high-quality diagrams and graphics using a simple text-based language.



Here is an example of a diagram in Graphviz format:

digraph G {
    A -> B;
    A -> C;
    B -> D;
    C -> D;


And this is an example of a diagram in Mermaid format:

graph TD
A[Christmas] -->|Get money| B(Go shopping)
B --> C{Let me think}
C -->|One| D[Laptop]
C -->|Two| E[iPhone]
C -->|Three| F[Car]

You can use these languages to generate a diagram by using the corresponding engine, and then include the generated image in your document or export it to different format.


Here is an example of a diagram represented in ASCII art:

|            |
|    Box     |
|            |

LaTeX Tikz

And here is an example of a diagram represented in LaTeX Tikz:

\draw (0,0) rectangle (1,1);

This code will produce a simple box as a rectangle.

You can use different options and commands to customize the appearance and add more details to your diagrams in LaTeX Tikz.

For example, you can use the \filldraw command to fill the rectangle with a color, or use the \node command to add text to the diagram, like this:

\filldraw[fill=blue!20, draw=black] (0,0) rectangle (1,1);
\node[text width=1cm, align=center] at (0.5,0.5) {Box};

This will produce a blue filled rectangle with black border, and with the text "Box" in the center.

How to produce png image from LaTeX Tikz?

There are a few ways to produce a PNG image from LaTeX Tikz code. One of the most common ways is to use the pdflatex command to first convert the LaTeX code with Tikz code into a PDF file, and then use a tool like convert from ImageMagick to convert the PDF into a PNG image.

Here is an example of how you can use these tools to produce a PNG image of a Tikz diagram:

  1. Create a LaTeX file with your Tikz code and save it with a .tex extension.

  2. Run pdflatex on the LaTeX file to produce a PDF file with the same name as the LaTeX file.

    pdflatex mytikzdiagram.tex

  3. Use convert to convert the PDF file into a PNG image.

    convert -density 300 mytikzdiagram.pdf -quality 90 mytikzdiagram.png

    This command will convert the pdf to a PNG image with a resolution of 300dpi, and a quality of 90%

Alternatively, you can use some online converters that do not require you to install any software, or you can use some LaTeX editors such as overleaf, which has the option to export the document to png, jpeg or other image formats.

Note that, in order to use pdflatex and convert you need to have them installed on your system.

full content of the input mytikzdiagram.tex file

Here's an example of a LaTeX file with Tikz code that creates a simple diagram of a rectangle with a label "Box" in the center:

\filldraw[fill=blue!20, draw=black] (0,0) rectangle (1,1);
\node[text width=1cm, align=center] at (0.5,0.5) {Box};

This file first includes the Tikz package, which is necessary to create the diagram. Then, it wraps the Tikz code inside a tikzpicture environment. The Tikz code creates a filled rectangle with a blue fill color and a black border, and then places a centered text node with the label "Box" in the center of the rectangle.

You can use this file as a starting point and modify it according to your needs.

Please keep in mind that you need to have a TeX distribution installed on your system to be able to use the above code, and you will also need to run it through a TeX compiler such as pdflatex to produce the pdf and then convert it to png using the command I provided earlier.