PyDLC - Density Line Charts with Python
Python implementation of the Density Line Chart (Moritz & Fisher, 2018) to visualize time series collections.
Installation
Python Package Index
$ pip install pydlc
Requirements
Usage
Example
The following example shows how to import and use the dense_lines
plotting function.
import numpy as np
import matplotlib.pyplot as plt
from pydlc import dense_lines
# Generate random synthetic time series
x = np.linspace(0, 90, 25)
ys = []
for _ in range(10000):
ys.append(np.random.randn(1)*np.exp(-x/100))
# Plot here
fig, axs = plt.subplots(1, 2, figsize=(8, 3), sharey=True, sharex=True)
axs[0].plot(x, np.array(ys).T, lw=1) # this is slow and cluttered
axs[0].set_title('Line Chart')
im = dense_lines(ys, x=x, ax=axs[1], cmap='magma') # this is fast and clean
axs[1].set_title('Density Lines Chart')
fig.colorbar(im)
fig.tight_layout()
plt.show()
Arguments
- ys (
list
of1darray
): The lines to plot. Can also be
passed as a2darray
. - x (
1darray
, optional): The x values corresponding to
the data passed withys
. If not provided,range(0, len(ys))
is used. - ax (
matplotlib axes
, optional): The axes to plot on. If not
provided a new figure will be created. - ny (
int
, optional): The vertical grid size. Higher values
yield a smoother density estimation. Default: 100. - y_pad (
float
, optional): The padding fraction to set the
grid limits past the data values. Must be greater than 0.
Default: 0.01. - normalize (
bool
, optional): Normalize the plot so the density
is between 0 and 1. Default: True. - **kwargs: Arbitrary keyword arguments to pass to
plt.imshow()
.
Limitations
- All series to be included in the density estimation and passed in the
ys
argument must have the same length. - The vertical grid size can be adjusted with the
ny
parameter. Higher values ofny
yield a smoother density visualization. However, the horizontal grid size is currently limited to the same size as the input sequences and there is no parameter to adjust it (yet).
Algorithm
This graphical abstract explains the algorithm (source).