Fundamentals 9 min read

5 Essential Open-Source Drawing Tools for Programmers: Draw.io, Excalidraw, Graphviz, Matplotlib, and PlantUML

The article reviews five essential open-source drawing tools for programmers—Draw.io for versatile diagramming, Excalidraw’s hand-drawn style, Graphviz’s automatic graph layout, Python’s Matplotlib for data visualizations, and PlantUML’s simple markup-based UML creation—highlighting key features, platforms, and typical use cases.

Tencent Cloud Developer
Tencent Cloud Developer
Tencent Cloud Developer
5 Essential Open-Source Drawing Tools for Programmers: Draw.io, Excalidraw, Graphviz, Matplotlib, and PlantUML

This article introduces 5 practical open-source drawing tools frequently used by programmers for technical documentation and architecture design.

1. Draw.io (diagrams.net)

Draw.io is a powerful, easy-to-use, open-source online flowchart drawing tool that supports creating various types of diagrams including flowcharts, network diagrams, organizational charts, and UML diagrams. It offers cross-platform support with desktop clients for Windows, macOS, and Linux. Key features include: a rich shape library with built-in templates, real-time multi-user collaboration, customizable shapes and templates, multiple export formats (PDF, SVG, PNG, JPEG, HTML), and plugin extensibility.

2. Excalidraw

Excalidraw is an open-source drawing tool known for its hand-drawn visual style, providing a simple yet feature-rich drawing experience. It supports direct browser access or Docker deployment to private servers. Features include end-to-end encrypted online collaboration, a plugin system for extended functionality, and a template library with various diagrams such as system architecture diagrams, component diagrams, UML diagrams, and hand-drawn figures.

3. Graphviz

Graphviz is an open-source tool package initiated by AT&T Labs Research that uses DOT language to describe graph structures and generates visualizations through automatic layout algorithms. Unlike manual tools like Microsoft Visio, Graphviz automatically handles node positioning and edge layout. Key features: simple text-based graph definition, support for directed/undirected graphs, flowcharts, org charts, class diagrams, network topology diagrams, flexible layout algorithms, cross-platform support, and multiple export formats (PNG, SVG, PDF).

4. Matplotlib

Matplotlib is a widely-used Python data visualization library that supports creating static, dynamic, and interactive charts for data analysis, scientific research, and engineering visualization. Key features include: intuitive API design, support for various chart types (line charts, scatter plots, bar charts, pie charts, box plots), extensive customization options, multiple output formats (PNG, JPEG, PDF, SVG), and tight integration with NumPy and Pandas.

Code example:

import matplotlib.pyplot as plt
import numpy as np
# Fixing random state for reproducibility
np.random.seed(19680801)
dt = 0.01
t = np.arange(0, 30, dt)
nse1 = np.random.randn(len(t))                 # white noise 1
nse2 = np.random.randn(len(t))                 # white noise 2
# Two signals with a coherent part at 10 Hz and a random part
s1 = np.sin(2 * np.pi * 10 * t) + nse1
s2 = np.sin(2 * np.pi * 10 * t) + nse2
fig, axs = plt.subplots(2, 1, layout='constrained')
axs[0].plot(t, s1, t, s2)
axs[0].set_xlim(0, 2)
axs[0].set_xlabel('Time (s)')
axs[0].set_ylabel('s1 and s2')
axs[0].grid(True)
cxy, f = axs[1].cohere(s1, s2, 256, 1. / dt)
axs[1].set_ylabel('Coherence')
plt.show()

5. PlantUML

PlantUML is an open-source project that supports quickly creating UML diagrams and various non-UML diagrams. It uses a simple and intuitive language that lets users focus on content rather than styling. PlantUML relies on Graphviz as a底层 component, using custom markup language to describe relationships between graphical elements and automatically layout and draw diagrams. It provides VS Code plugin support for convenient integration into developer workflows.

software developmenttechnical documentationopen-sourcePlantUMLdraw.iovisualizationdiagram toolsexcalidrawGraphvizMatplotlib
Tencent Cloud Developer
Written by

Tencent Cloud Developer

Official Tencent Cloud community account that brings together developers, shares practical tech insights, and fosters an influential tech exchange community.

0 followers
Reader feedback

How this landed with the community

login Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.