Skip to main content

SciQLop plot API based on QCustomPlot

Project description

License: GPL v3 C++20 PyPi Coverage

SciQLopPlots

A high-performance scientific plotting library built on C++20/Qt6 with Python bindings via Shiboken6 (PySide6). Designed for the SciQLop data analysis platform but usable standalone.

Features

  • Async resampling — render millions of points smoothly; data is downsampled in background threads via NeoQCP pipelines
  • Multiple plot types — time series (line graphs), spectrograms (color maps), histograms, parametric curves
  • Interactive — pan, zoom, data-driven callbacks, vertical/horizontal spans, tracers
  • Multi-plot panels — synchronized axes, aligned margins, drag-and-drop from product trees
  • Export — PDF (vector), PNG, JPG, BMP for both individual plots and panels
  • Busy indicator — visual feedback when data is loading or being processed
  • Cross-platform — Linux, macOS, Windows

Quick start

pip install SciQLopPlots
import numpy as np
from PySide6.QtWidgets import QApplication
from SciQLopPlots import SciQLopPlot

app = QApplication([])
plot = SciQLopPlot()

# Static data
x = np.arange(0, 1000, dtype=np.float64)
y = np.sin(x / 100) * np.cos(x / 10)
plot.plot(x, y, labels=["signal"])

# Data callback (called on pan/zoom with visible range)
def get_data(start, stop):
    x = np.arange(start, stop, dtype=np.float64)
    y = np.column_stack([np.sin(x / 100), np.cos(x / 100)])
    return x, y

plot.plot(get_data, labels=["sin", "cos"])

plot.show()
app.exec()

Reactive pipelines

Connect plot properties with the >> operator to build live data pipelines:

from SciQLopPlots import SciQLopPlot

plot = SciQLopPlot()
graph = plot.plot(lambda start, stop: ..., labels=["signal"])

# Axis range changes automatically feed a transform, which pushes data to the graph
plot.x_axis.on.range >> get_data >> graph.on.data

# Direct property forwarding (no transform)
span.on.range >> plot.x_axis.on.range

# Chain multiple steps
source.on.range >> transform >> target.on.data

The pipeline handles signal connection, call-style detection (positional args vs Event object), and automatic disconnection when objects are destroyed.

Run the gallery for a full feature showcase:

python tests/manual-tests/gallery.py

Building from source

Requires Qt6, PySide6 == 6.10.2, a C++20 compiler, and Meson.

# Development build
meson setup build --buildtype=debug
meson compile -C build

# Install as editable Python package
pip install -e . --no-build-isolation

Contributing

Fork the repository, make your changes and submit a pull request. Bug reports and feature requests are welcome.

Credits

Development is supported by CDPP. We acknowledge support from Plas@Par.

Thanks

  • PySide6 — Qt bindings and Shiboken6 binding generator
  • NeoQCP — fork of QCustomPlot with async pipelines, multi-dtype support, and QRhi rendering

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sciqlopplots-0.19.1.tar.gz (1.2 MB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

sciqlopplots-0.19.1-cp314-cp314-win_amd64.whl (1.9 MB view details)

Uploaded CPython 3.14Windows x86-64

sciqlopplots-0.19.1-cp314-cp314-manylinux_2_39_aarch64.whl (3.8 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.39+ ARM64

sciqlopplots-0.19.1-cp314-cp314-manylinux_2_34_x86_64.whl (4.2 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.34+ x86-64

sciqlopplots-0.19.1-cp314-cp314-macosx_13_0_x86_64.whl (3.1 MB view details)

Uploaded CPython 3.14macOS 13.0+ x86-64

sciqlopplots-0.19.1-cp314-cp314-macosx_13_0_arm64.whl (2.9 MB view details)

Uploaded CPython 3.14macOS 13.0+ ARM64

sciqlopplots-0.19.1-cp313-cp313-win_amd64.whl (1.8 MB view details)

Uploaded CPython 3.13Windows x86-64

sciqlopplots-0.19.1-cp313-cp313-manylinux_2_39_aarch64.whl (3.8 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.39+ ARM64

sciqlopplots-0.19.1-cp313-cp313-manylinux_2_34_x86_64.whl (4.2 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.34+ x86-64

sciqlopplots-0.19.1-cp313-cp313-macosx_13_0_x86_64.whl (3.1 MB view details)

Uploaded CPython 3.13macOS 13.0+ x86-64

sciqlopplots-0.19.1-cp313-cp313-macosx_13_0_arm64.whl (2.9 MB view details)

Uploaded CPython 3.13macOS 13.0+ ARM64

sciqlopplots-0.19.1-cp312-cp312-win_amd64.whl (1.8 MB view details)

Uploaded CPython 3.12Windows x86-64

sciqlopplots-0.19.1-cp312-cp312-manylinux_2_39_aarch64.whl (3.8 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.39+ ARM64

sciqlopplots-0.19.1-cp312-cp312-manylinux_2_34_x86_64.whl (4.2 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.34+ x86-64

sciqlopplots-0.19.1-cp312-cp312-macosx_13_0_x86_64.whl (3.1 MB view details)

Uploaded CPython 3.12macOS 13.0+ x86-64

sciqlopplots-0.19.1-cp312-cp312-macosx_13_0_arm64.whl (2.9 MB view details)

Uploaded CPython 3.12macOS 13.0+ ARM64

sciqlopplots-0.19.1-cp311-cp311-win_amd64.whl (1.8 MB view details)

Uploaded CPython 3.11Windows x86-64

sciqlopplots-0.19.1-cp311-cp311-manylinux_2_39_aarch64.whl (3.8 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.39+ ARM64

sciqlopplots-0.19.1-cp311-cp311-manylinux_2_34_x86_64.whl (4.2 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.34+ x86-64

sciqlopplots-0.19.1-cp311-cp311-macosx_13_0_x86_64.whl (3.1 MB view details)

Uploaded CPython 3.11macOS 13.0+ x86-64

sciqlopplots-0.19.1-cp311-cp311-macosx_13_0_arm64.whl (2.9 MB view details)

Uploaded CPython 3.11macOS 13.0+ ARM64

sciqlopplots-0.19.1-cp310-cp310-win_amd64.whl (1.8 MB view details)

Uploaded CPython 3.10Windows x86-64

sciqlopplots-0.19.1-cp310-cp310-manylinux_2_39_aarch64.whl (3.8 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.39+ ARM64

sciqlopplots-0.19.1-cp310-cp310-manylinux_2_34_x86_64.whl (4.2 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.34+ x86-64

sciqlopplots-0.19.1-cp310-cp310-macosx_13_0_x86_64.whl (3.1 MB view details)

Uploaded CPython 3.10macOS 13.0+ x86-64

sciqlopplots-0.19.1-cp310-cp310-macosx_13_0_arm64.whl (2.9 MB view details)

Uploaded CPython 3.10macOS 13.0+ ARM64

File details

Details for the file sciqlopplots-0.19.1.tar.gz.

File metadata

  • Download URL: sciqlopplots-0.19.1.tar.gz
  • Upload date:
  • Size: 1.2 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for sciqlopplots-0.19.1.tar.gz
Algorithm Hash digest
SHA256 103f15a73777beb47f14bd31c28bed317c44d037a9303a72d2087cbb81f85cfc
MD5 58352d70783012d8c295d72aab5822bd
BLAKE2b-256 2a53f526fe0f15c820ab1ed669ba7df1e06aab62a98356dbd532f7b24ac6f703

See more details on using hashes here.

File details

Details for the file sciqlopplots-0.19.1-cp314-cp314-win_amd64.whl.

File metadata

File hashes

Hashes for sciqlopplots-0.19.1-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 c29ff62dce44cf37631733220eaba4985d115b9b107fc2099ee611f880731d78
MD5 42d1c9e6e01412faab1283ce8e3c07f5
BLAKE2b-256 626f8ab5f229feaf120c1ef82dba27bf6f2fed87d96663147ad25ae52bbbc957

See more details on using hashes here.

File details

Details for the file sciqlopplots-0.19.1-cp314-cp314-manylinux_2_39_aarch64.whl.

File metadata

File hashes

Hashes for sciqlopplots-0.19.1-cp314-cp314-manylinux_2_39_aarch64.whl
Algorithm Hash digest
SHA256 31511e3f29e26299ad297f264ed327f2a1623f2e0f1c04e662949eaf45fe4a85
MD5 d2b095cb9e907ed47e995172259fbea3
BLAKE2b-256 d8b51c4c1e5e02846c54ac2cf07e3425483fcac681b022fdce53bac590c88ba1

See more details on using hashes here.

File details

Details for the file sciqlopplots-0.19.1-cp314-cp314-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for sciqlopplots-0.19.1-cp314-cp314-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 3cb03501b2a7e479aeba4268975e7502d5c5189e744382ddfc48619513fb9e1a
MD5 d9b6a6a69bc081c108fabcc9b928ccf9
BLAKE2b-256 07cbaab4d072ceff00695aa22cc502b505b9c13fbf2ebb70c89f89896110c678

See more details on using hashes here.

File details

Details for the file sciqlopplots-0.19.1-cp314-cp314-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for sciqlopplots-0.19.1-cp314-cp314-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 6461ac52a07017b8591d294b273baba982b54a848b9087e678e3e6726edc25a4
MD5 ce0e280f6593bbf07784c2325b17ae88
BLAKE2b-256 d84e4d64dea7ebf95ce850dfbb7f12bb0a9fa46a3a12ca7a7c3602dc621c85f0

See more details on using hashes here.

File details

Details for the file sciqlopplots-0.19.1-cp314-cp314-macosx_13_0_arm64.whl.

File metadata

File hashes

Hashes for sciqlopplots-0.19.1-cp314-cp314-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 95da9c9edaa58211163317622c0dc821461f8f6db07f56f1d1778c8395fe8606
MD5 7f33bac05e059c59f8a5c2fd5c6c6a14
BLAKE2b-256 e91c0121123a61834452218e5a7df57b71febdae5482e98a278f704937a5e330

See more details on using hashes here.

File details

Details for the file sciqlopplots-0.19.1-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for sciqlopplots-0.19.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 c8c0e5fc117ba790bbab18915947ec2de534b39450eb9fe0db057b103bd1f5b4
MD5 9dc189185e506de6d837cb9b339f5007
BLAKE2b-256 698e481cae9d8fdc18c330e1c5f98f50bf996786460f7956e4f5fa0117232d36

See more details on using hashes here.

File details

Details for the file sciqlopplots-0.19.1-cp313-cp313-manylinux_2_39_aarch64.whl.

File metadata

File hashes

Hashes for sciqlopplots-0.19.1-cp313-cp313-manylinux_2_39_aarch64.whl
Algorithm Hash digest
SHA256 6941c76e6f9a75beece14f741a507a0af1136a4e79b2318c453b5a44407e0a70
MD5 d6ebc0ddff6fe9cdd0aeae2ce34f9b85
BLAKE2b-256 ccc096a6a64ee5b20db7ca0ec96684fed6fb64f74b7453c66276b30d55b7d5be

See more details on using hashes here.

File details

Details for the file sciqlopplots-0.19.1-cp313-cp313-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for sciqlopplots-0.19.1-cp313-cp313-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 3a539e6bc4ef230f8c42cd721b3842f62f12cb321446f7e80013825ea15030b5
MD5 271848df1e1ab7ed944c4c27c3da300b
BLAKE2b-256 315640ac485ab2fee35bc6531bb5e2fc79140e6ea5e1bd926b115fc563f4e7e3

See more details on using hashes here.

File details

Details for the file sciqlopplots-0.19.1-cp313-cp313-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for sciqlopplots-0.19.1-cp313-cp313-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 fa8f9c9ddb850fc5c964709696faf339729a3d338b9807112c9daea69f80547e
MD5 8135e03d030a9034ddb777b57369878b
BLAKE2b-256 280c950e9f542cd40fc9b61bf1233d5be35663eed981af7851487045d2560140

See more details on using hashes here.

File details

Details for the file sciqlopplots-0.19.1-cp313-cp313-macosx_13_0_arm64.whl.

File metadata

File hashes

Hashes for sciqlopplots-0.19.1-cp313-cp313-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 5e4e088e0fe8ede8a84913eb1f628cd3ae3c16bcb075aa503f6e77fb128393f7
MD5 de71bd4893ca46bf75a6c54c463eb60e
BLAKE2b-256 8362536fec87a7bb1ed99013854d726af32331990260bc9a40ff149011c4af84

See more details on using hashes here.

File details

Details for the file sciqlopplots-0.19.1-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for sciqlopplots-0.19.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 042c61021132c6d1f32d53171ffd94172ec0808bb8a581dd29caed643ebfce48
MD5 7225c4ab8576a1b8c03159ecf9a071ac
BLAKE2b-256 d38c8c22334f4f25b1e5a56ca9f5a2f4e91d680bf75967ac08542259fc2213a8

See more details on using hashes here.

File details

Details for the file sciqlopplots-0.19.1-cp312-cp312-manylinux_2_39_aarch64.whl.

File metadata

File hashes

Hashes for sciqlopplots-0.19.1-cp312-cp312-manylinux_2_39_aarch64.whl
Algorithm Hash digest
SHA256 af48029fe321fb53596ee1c799b55779dd0d3893ebb79dbf38f00c073bad2d6a
MD5 bcb0d8bf4702281befd718272c360b54
BLAKE2b-256 8696dacba227603d6551335deecb9b74b62c43299d2111493f2e361c5644d06e

See more details on using hashes here.

File details

Details for the file sciqlopplots-0.19.1-cp312-cp312-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for sciqlopplots-0.19.1-cp312-cp312-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 84ed4fb843e4f5832c85f63bd95b1fdde78427cfc3d728ff990ad3c5e7092b67
MD5 75590c06e6081b353e0ce885eda1e1c3
BLAKE2b-256 da9adef56fea4050f6fdf4e8a71c1ba9ec770fdc92e7e53bf998c7ecbcd0f9ea

See more details on using hashes here.

File details

Details for the file sciqlopplots-0.19.1-cp312-cp312-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for sciqlopplots-0.19.1-cp312-cp312-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 38b5fb30413c50214c44207dc983d8b9f3e013d9f2a839b25f02fefc6cc06d66
MD5 665d0887f467cf7a69f1474812d2259e
BLAKE2b-256 6471c7e257bd40a4eb591a90ec9b3e0f49970ef7cf7d64c6e0a71c5e25826edb

See more details on using hashes here.

File details

Details for the file sciqlopplots-0.19.1-cp312-cp312-macosx_13_0_arm64.whl.

File metadata

File hashes

Hashes for sciqlopplots-0.19.1-cp312-cp312-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 bca2441518f82c9b13fd86d343b56dc9ff0b9236496fca74d394ec5243f88a1b
MD5 c906058c4b13f6853112b349f75f4f7d
BLAKE2b-256 18014b2cf3ad4234bbd89a16f7d7c90418360cd8015765804b8eabbd6ecb8137

See more details on using hashes here.

File details

Details for the file sciqlopplots-0.19.1-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for sciqlopplots-0.19.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 0b06644d65a610417b09fd658bbc02d03a383dfb87583f145b9738fc1d5224e1
MD5 b1be5886e66586f62c10408248073a3c
BLAKE2b-256 f336ba3c37a8599304e38a2ba5c793928c29115c29a160630c3d4c8aad51442e

See more details on using hashes here.

File details

Details for the file sciqlopplots-0.19.1-cp311-cp311-manylinux_2_39_aarch64.whl.

File metadata

File hashes

Hashes for sciqlopplots-0.19.1-cp311-cp311-manylinux_2_39_aarch64.whl
Algorithm Hash digest
SHA256 97326d838f14aaad3e2e8e98efac429958e454c8ec5b057b21499e3f7c7b2803
MD5 dd74034b69f4422f036fd6c8b0354cd7
BLAKE2b-256 100d69a88b48587feca33a627ce15d655081ef9f3f4de26260a73787530d2269

See more details on using hashes here.

File details

Details for the file sciqlopplots-0.19.1-cp311-cp311-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for sciqlopplots-0.19.1-cp311-cp311-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 a3a88fd90e0238bb0b41865eb16994e83adabc89aed3d9b986be1a4a4620ef97
MD5 f3ab1f289b10b748f92d0c55c2ff8a10
BLAKE2b-256 20916072fc05a0e24f223f864d0431a06c87cf35c09bfa3edb4734502a85fc16

See more details on using hashes here.

File details

Details for the file sciqlopplots-0.19.1-cp311-cp311-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for sciqlopplots-0.19.1-cp311-cp311-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 8fd1ac5b767877f20eea10302d329fe12342ee7ad5eebfb9ceea80210ee9321e
MD5 95b216304527cf88b491a78c768fecba
BLAKE2b-256 66e56f5c6900f7b3f764666ff8a030bf26fb31207007c65d2bab25b0ba3c4660

See more details on using hashes here.

File details

Details for the file sciqlopplots-0.19.1-cp311-cp311-macosx_13_0_arm64.whl.

File metadata

File hashes

Hashes for sciqlopplots-0.19.1-cp311-cp311-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 ca6c00b17ec5d84c30a5d85b4971a4c21261ccf0b613006350a8c55693edc027
MD5 0ba2023a1d5cc7d31ec65a04bd7ca995
BLAKE2b-256 60c1a6af77298d7d786a114737a3dfe2ef6fc9a05a570061b91f80f31b856788

See more details on using hashes here.

File details

Details for the file sciqlopplots-0.19.1-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for sciqlopplots-0.19.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 bd7762095b27da7a95f9c66118e261a1cf919df19dbad3bf58e4b6b558a2b49e
MD5 3cc7e8df252a22c652e754ad4456791d
BLAKE2b-256 4b42e64f973137cfd797d6a5f20e8788f3526f783058f7915f598ce205728fbe

See more details on using hashes here.

File details

Details for the file sciqlopplots-0.19.1-cp310-cp310-manylinux_2_39_aarch64.whl.

File metadata

File hashes

Hashes for sciqlopplots-0.19.1-cp310-cp310-manylinux_2_39_aarch64.whl
Algorithm Hash digest
SHA256 15da8a057eb107d8c2bf986e6ee40a181c241e3570cf6852bf531722e1b34b8a
MD5 f49953e10df7ba0ef4e9183185ad2d62
BLAKE2b-256 e31af380cec31119f6da9e1de006b1b219632df810fd661b2a0c0ddbf55a195a

See more details on using hashes here.

File details

Details for the file sciqlopplots-0.19.1-cp310-cp310-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for sciqlopplots-0.19.1-cp310-cp310-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 319bef5f995e5774f3a82be5304ffefc006027fef42d89934fd7cd8766df9bb0
MD5 315b1e652b333d59e680223864b39323
BLAKE2b-256 76528372d28cbe2a29938d1557082346c6f7b93175e9dfec54112044d7d8abc1

See more details on using hashes here.

File details

Details for the file sciqlopplots-0.19.1-cp310-cp310-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for sciqlopplots-0.19.1-cp310-cp310-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 2d680166ea066fcea500635d4628a95fcd9c3b4a597a634f5c25accd7f4bf768
MD5 b92b2797995fa05b760ad62ef34c8b2b
BLAKE2b-256 3c47a21a4c43124a498b97a02a9e6a8c36337afb8a3f9fcf1bfaf9353cdb9a34

See more details on using hashes here.

File details

Details for the file sciqlopplots-0.19.1-cp310-cp310-macosx_13_0_arm64.whl.

File metadata

File hashes

Hashes for sciqlopplots-0.19.1-cp310-cp310-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 3dce89be5cae063a5138157581c1990ea315a3e925beb3616b3f6bd6070d100f
MD5 8f930d3ffe43032ab6a2d20ecf0095ff
BLAKE2b-256 511d274b3fce95d2d1a7d9e31c6b8a4dfcb66227df600034a4b2cd7c00d80654

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page