Plot time-series data from line-delimited JSON.
Project description
foxplot
Plot time series from newline-delimited JSON.
Installation
pip install foxplot
Usage
Foxplot starts in interactive mode by default to explore the input gathered in data
(tab completion works: try data.<TAB>
). Plot times series using the fox.plot
function, for example:
$ foxplot upkie_2023-05-03-103245.mpack
Python 3.8.10 (default, Mar 13 2023, 10:26:41)
Type 'copyright', 'credits' or 'license' for more information
IPython 8.0.1 -- An enhanced Interactive Python. Type '?' for help.
In [1]: fox.plot(data.observation.imu.angular_velocity)
This call opens a new tab in your browser with the desired plot. In this example, angular_velocity
is a 3D vector, thus the plot will include three curves.
Left and right axes
Here is a plot with both left- and right-axis time series:
In [2]: fox.plot(
...: [
...: data.observation.servo.left_knee.position,
...: data.observation.servo.left_wheel.position,
...: ],
...: right=[
...: data.observation.servo.left_knee.velocity,
...: data.observation.servo.left_wheel.velocity,
...: ],
...: left_axis_unit="rad",
...: right_axis_unit="rad/s",
...: print_command_line=True,
...: )
Check out the other arguments to fox.plot
in its documentation (IPython: fox.plot?
).
Computing new series
Time series are labeled NumPy arrays, and can be manipulated as such. For example:
In [1]: left_knee = data.observation.servo.left_knee
In [2]: left_knee_power = left_knee.torque * left_knee.velocity
In [3]: fox.plot(left_knee_power, right=[left_knee.velocity])
Plotting from files
We can also plot data from files and pipes directly, for example:
- JSON:
foxplot my_data.json -l /observation/cpu_temperature
- MessagePack:
foxplot my_data.mpack -l /observation/cpu_temperature
Tips
Zsh users can filter foxplot completion on JSON and MessagePack files:
zstyle ":completion:*:*:foxplot:*" ignored-patterns "^*.(json|mpack)"
See also
- µPlot: time-series plotting library, whose performance was a key enabler for this project.
- mpacklog.cpp: library to log dictionaries to MessagePack files in C++.
- mpacklog.py: library and command-line tools to log dictionaries to MessagePack files in Python.
- rq: command-line tool to manipulate streams of records in various formats.
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.
Source Distribution
Built Distribution
File details
Details for the file foxplot-0.6.0.tar.gz
.
File metadata
- Download URL: foxplot-0.6.0.tar.gz
- Upload date:
- Size: 80.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: python-requests/2.28.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8c76215ec299d6ca530b0795d1653d8dbfb2474f3e5665de75c4a8391c3772b0 |
|
MD5 | a009797bfb34c3d761dbc4e288a04cf9 |
|
BLAKE2b-256 | f17f04cd3e7077b3637cd3aa706ff33e4d2b41789b639f6d5501bdeb66be9a4f |
File details
Details for the file foxplot-0.6.0-py3-none-any.whl
.
File metadata
- Download URL: foxplot-0.6.0-py3-none-any.whl
- Upload date:
- Size: 57.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: python-requests/2.28.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7dada09f89c73074009a457ee6fd283c830c8781985cf9cf7546dd7311cbd5c0 |
|
MD5 | 1d438c48ebcf5e88cb8ded0f79cf3166 |
|
BLAKE2b-256 | 10e73b52147443926a67c4903ce0c992a1a9832a8172d8eca1df26028f106025 |