All Projects → windelbouwman → Lognplot

windelbouwman / Lognplot

Licence: gpl-3.0
Plotting and logging of real-time data for desktop.

Programming Languages

python
139335 projects - #7 most used programming language
rust
11053 projects

Projects that are alternatives of or similar to Lognplot

V2rayl
v2ray linux GUI客户端,支持订阅、vemss、ss等协议,自动更新订阅、检查版本更新
Stars: ✭ 2,722 (+5948.89%)
Mutual labels:  gui, pyqt5
Cura
3D printer / slicing GUI built on top of the Uranium framework
Stars: ✭ 3,401 (+7457.78%)
Mutual labels:  gui, pyqt5
Oblivion
Data leak checker & OSINT Tool
Stars: ✭ 237 (+426.67%)
Mutual labels:  gui, pyqt5
Implot
Immediate Mode Plotting
Stars: ✭ 2,014 (+4375.56%)
Mutual labels:  gui, plotting
Persepolis
Persepolis Download Manager is a GUI for aria2.
Stars: ✭ 5,218 (+11495.56%)
Mutual labels:  gui, pyqt5
Git Cola
git-cola: The highly caffeinated Git GUI
Stars: ✭ 1,787 (+3871.11%)
Mutual labels:  gui, pyqt5
SciPlot-PyQt
A Matplotlib-wrapped user-interface for creating and editing publication-ready images and plots
Stars: ✭ 32 (-28.89%)
Mutual labels:  pyqt5, plotting
Silx
silx toolkit
Stars: ✭ 69 (+53.33%)
Mutual labels:  gui, plotting
Pydebloatx
Python GUI for uninstalling the default Windows 10 apps.
Stars: ✭ 487 (+982.22%)
Mutual labels:  gui, pyqt5
Qt Python Binding Examples
Lots of simple and Pythonic PySide demos
Stars: ✭ 312 (+593.33%)
Mutual labels:  gui, pyqt5
Handwriter
A smart program to convert digital document to hand-written document
Stars: ✭ 108 (+140%)
Mutual labels:  gui, pyqt5
Pyquino
python3 serial port with PyQt5 Gui
Stars: ✭ 19 (-57.78%)
Mutual labels:  gui, pyqt5
Joytan
Creative Audio/Textbook Maker 🎵 📖 See our YouTube channel
Stars: ✭ 91 (+102.22%)
Mutual labels:  gui, pyqt5
Dottorrent Gui
An advanced GUI torrent file creator with batch functionality, powered by PyQt and dottorrent
Stars: ✭ 175 (+288.89%)
Mutual labels:  gui, pyqt5
Examples
Learn to create a desktop app with Python and Qt
Stars: ✭ 1,196 (+2557.78%)
Mutual labels:  gui, pyqt5
tablexplore
Table analysis and plotting application written in PySide2/PyQt5
Stars: ✭ 89 (+97.78%)
Mutual labels:  pyqt5, plotting
Traffic Rules Violation Detection
The System consists of two main components. Vehicle detection model and A graphical user interface (GUI)
Stars: ✭ 67 (+48.89%)
Mutual labels:  gui, pyqt5
15 Minute Apps
15 minute (small) desktop apps built with PyQt
Stars: ✭ 3,086 (+6757.78%)
Mutual labels:  gui, pyqt5
Uplot
📈 A small, fast chart for time series, lines, areas, ohlc & bars
Stars: ✭ 6,808 (+15028.89%)
Mutual labels:  timeseries, plotting
Pyqt5
Códigos sobre PyQt5
Stars: ✭ 23 (-48.89%)
Mutual labels:  gui, pyqt5

Build Status dependency status Documentation Status docs.rs Documentation crates.io page PyPI matrix .github/workflows/ci.yml

logo

Live timeseries analysis on your desktop!

About

Lognplot is a graphical viewer for time series data. Unlike many other projects in this area, lognplot is not a hosted web application. It is a desktop application which visualizes your data from your application. This can be an embedded, robotic, mobile, PC or PLC application.

Features:

  • Plot data live while staying responsive
  • Send data over TCP/IP link to GUI.
  • Two GUI implementations:
    • python GUI implementation (based on PyQt5)
    • rust GUI implementation (based on gtk-rs / cairo)
  • Client libraries for:
  • Export data to HDF5
  • Data adapters for:
    • ADS
    • MQTT
    • ROS2

Video

These are recorded videos of the tool:

Screenshots

This is an example screenshot of the lognplot python application, visualizing 10 million datapoints. Note that zooming is still smoothly performed.

screenshot3

This is an example screenshot of the GTK gui implemented with rust, visualizing also 10 million datapoints.

screenshot4

This is an example of the plot window, when zoomed out. Note that not all points are displayed, but aggregates of the data are visualized as min/max/mean/stddev lines.

screenshot1

When zooming into the data, the individual data points come into picture.

screenshot2

Installation

Note that at this moment, you will want to grab the latest git version from github.

First clone this repository:

$ git clone https://github.com/windelbouwman/lognplot.git

For python, follow this steps:

$ cd lognplot/python
$ pip install .
$ python -m lognplot

For rust, follow these steps:

$ cd lognplotgtk
$ cargo run --release

Packages are released for rust and python

Rust crate: https://crates.io/crates/lognplot

Python package: https://pypi.org/project/lognplot/

Requirements

For the GTK variant of the tool, you need the following to be installed:

  • cairo-gobject-devel
  • pango-devel
  • atk-devel
  • gdk-pixbuf2-devel
  • gtk3-devel
  • hdf5-devel

Usage

To use the python side of this code, start as a demo the softscope:

$ cd python
$ python softscope.py

This will popup a plot window. Zooming and panning can be done with the keyboard keys w,a,s,d and i,j,k,l. Press space or enter to autofit. The data is a 10 kHz generated signal.

Another demo is the softscope server. This will open a TCP/IP port which can receive data.

$ cd python
$ python -m lognplot

The softscope is now ready to receive streaming data via network.

Next, start the demo datasource, which will send data via TCP to this GUI:

$ cd demo
$ python noize_source.py

Another server demo is the rust side of the code. Start the GUI like this:

$ cd lognplotgtk
$ cargo run

This application will be able to receive data via TCP/IP.

Send data from C code

To send data from C-code, refer to the demo in demo/c. This demo uses the clognplot rust crate, which is a static library which can be used from C. The resulting C program will connect over TCP/IP and send its data to the plot tool using parts of the rust crates.

Export data to HDF5

To be able to further process the data in, for example, a python script, you can use File->Save to save all captured data as a HDF5 file.

Example usage of this saved HDF5 file:

import h5py
from matplotlib import pyplot as plt

f = h5py.File('datorz.h5', 'r')
group = f['my_datorz']
signal = group['My_signal']
plt.plot(signal[:,0], signal[:,1])
plt.show()

Documentation

Documentation for python users can be found here: https://lognplot.readthedocs.io/en/latest/ Documentation for rust users can be found here: https://docs.rs/lognplot

Plan

This is a list of things to do:

  • PyQt5 implementation
  • gtk-rs implementation

Requirements for live data visualization

  • Append data structure to enable appending new data
  • Data point aggregation for zooming out and showing min/max/mean lines

Similar projects

There is an interesting list of similar projects. Do you know of another project? Please submit a pull request or an issue!

Profiling

To optimize the GUI experience, you can profile the rust lognplot gui by the following method.

Modify the Cargo.toml file to include this snippet:

[profile.release]
debug = true

This will build in release mode, but include debug symbols.

Now, build in release mode:

$ cargo build --release

Next up, use the linux perf tool to profile the application:

$ perf record -F 99 --call-graph dwarf target/release/lognplotgtk

Now perform some intensive work. When done, close the gui.

Analyze the perf results:

$ perf report
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].