Clean matplotlib plots
Project description
Tufte-style plots from Berlin.
This package creates clean and beautiful plots that work on light and dark backgrounds.
Simply select the dufte
style and, if desired, call dufte.legend()
to get
line annotations on the right.
import matplotlib.pyplot as plt
import dufte
import numpy
plt.style.use(dufte.style)
numpy.random.seed(0)
x0 = numpy.linspace(0.0, 3.0, 100)
y0 = x0 / (x0 + 1)
y0 += 0.1 * numpy.random.rand(len(y0))
plt.plot(x0, y0, "no balacing")
x1 = numpy.linspace(0.0, 3.0, 100)
y1 = 1.5 * x1 / (x1 + 1)
y1 += 0.1 * numpy.random.rand(len(y1))
plt.plot(x1, y1, "CRV-27")
x2 = numpy.linspace(0.0, 3.0, 100)
y2 = 1.6 * x2 / (x2 + 1)
y2 += 0.1 * numpy.random.rand(len(y2))
plt.plot(x2, y2, "CRV-27*")
dufte.legend()
plt.show()
Further reading:
Background
The position $x_i$ of the line annotations is computed as the solution of a non-negative least-squares problem $$ \begin{align} \frac{1}{2}\sum_i (x_i - t_i)^2 \to \min_x,\\ (x_i - x_j)^2 \ge a^2 \quad \forall i,j. \end{align} $$ where $a$ is the minimum distance between two entries and $t_i$ is the target position.
Testing
To run the dufte unit tests, check out this repository and type
pytest
License
This software is published under the GPLv3 license.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.