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.0.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.0-cp314-cp314-win_amd64.whl (1.9 MB view details)

Uploaded CPython 3.14Windows x86-64

sciqlopplots-0.19.0-cp314-cp314-manylinux_2_39_aarch64.whl (3.5 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.39+ ARM64

sciqlopplots-0.19.0-cp314-cp314-manylinux_2_34_x86_64.whl (3.8 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.34+ x86-64

sciqlopplots-0.19.0-cp314-cp314-macosx_13_0_x86_64.whl (2.8 MB view details)

Uploaded CPython 3.14macOS 13.0+ x86-64

sciqlopplots-0.19.0-cp314-cp314-macosx_13_0_arm64.whl (2.6 MB view details)

Uploaded CPython 3.14macOS 13.0+ ARM64

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

Uploaded CPython 3.13Windows x86-64

sciqlopplots-0.19.0-cp313-cp313-manylinux_2_39_aarch64.whl (3.5 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.39+ ARM64

sciqlopplots-0.19.0-cp313-cp313-manylinux_2_34_x86_64.whl (3.8 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.34+ x86-64

sciqlopplots-0.19.0-cp313-cp313-macosx_13_0_x86_64.whl (2.8 MB view details)

Uploaded CPython 3.13macOS 13.0+ x86-64

sciqlopplots-0.19.0-cp313-cp313-macosx_13_0_arm64.whl (2.6 MB view details)

Uploaded CPython 3.13macOS 13.0+ ARM64

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

Uploaded CPython 3.12Windows x86-64

sciqlopplots-0.19.0-cp312-cp312-manylinux_2_39_aarch64.whl (3.5 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.39+ ARM64

sciqlopplots-0.19.0-cp312-cp312-manylinux_2_34_x86_64.whl (3.8 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.34+ x86-64

sciqlopplots-0.19.0-cp312-cp312-macosx_13_0_x86_64.whl (2.8 MB view details)

Uploaded CPython 3.12macOS 13.0+ x86-64

sciqlopplots-0.19.0-cp312-cp312-macosx_13_0_arm64.whl (2.6 MB view details)

Uploaded CPython 3.12macOS 13.0+ ARM64

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

Uploaded CPython 3.11Windows x86-64

sciqlopplots-0.19.0-cp311-cp311-manylinux_2_39_aarch64.whl (3.5 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.39+ ARM64

sciqlopplots-0.19.0-cp311-cp311-manylinux_2_34_x86_64.whl (3.8 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.34+ x86-64

sciqlopplots-0.19.0-cp311-cp311-macosx_13_0_x86_64.whl (2.8 MB view details)

Uploaded CPython 3.11macOS 13.0+ x86-64

sciqlopplots-0.19.0-cp311-cp311-macosx_13_0_arm64.whl (2.6 MB view details)

Uploaded CPython 3.11macOS 13.0+ ARM64

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

Uploaded CPython 3.10Windows x86-64

sciqlopplots-0.19.0-cp310-cp310-manylinux_2_39_aarch64.whl (3.5 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.39+ ARM64

sciqlopplots-0.19.0-cp310-cp310-manylinux_2_34_x86_64.whl (3.9 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.34+ x86-64

sciqlopplots-0.19.0-cp310-cp310-macosx_13_0_x86_64.whl (2.8 MB view details)

Uploaded CPython 3.10macOS 13.0+ x86-64

sciqlopplots-0.19.0-cp310-cp310-macosx_13_0_arm64.whl (2.6 MB view details)

Uploaded CPython 3.10macOS 13.0+ ARM64

File details

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

File metadata

  • Download URL: sciqlopplots-0.19.0.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.0.tar.gz
Algorithm Hash digest
SHA256 84f9108e2d3c217b81dd7c5d3f7bed87c71655577eb2798591595b32d5dfba12
MD5 eba1d044f0bd618869990b0ae550812e
BLAKE2b-256 3394d7437832727c2925546305691023f0c45139994b038a435bd345693dfb16

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for sciqlopplots-0.19.0-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 01cc263f9452ca2fcef20e4a773f555f40d367b1ed55f746e7f7eb5aeb76f8b1
MD5 8226e8b29a11c7b851e1469ae0cd1386
BLAKE2b-256 7b12b74bb587b70926d3c05ff39952939ff8553e6e7aa1524e7c58400cd51ee9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for sciqlopplots-0.19.0-cp314-cp314-manylinux_2_39_aarch64.whl
Algorithm Hash digest
SHA256 becc852b8e72e043a6a9eb72a141b5eca2eddcf6e08afcfb4322f81ecc533b3e
MD5 c81818254002e4a0660e4259637766a0
BLAKE2b-256 c7011893003bcd1e983bcbfb0f60452f76b8a40ff37a8c70a8c5f58f0e6be4a5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for sciqlopplots-0.19.0-cp314-cp314-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 23a6820426a011f65c87db892d1450c1c4069161fda853bc1e6a5eb52b572595
MD5 c87a91e274dff6dc8d4d7942d56e9a42
BLAKE2b-256 2b29b4d0970d7cca7eab3c974127ce0a1a193f7312fd4969aa4afceb2db61986

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for sciqlopplots-0.19.0-cp314-cp314-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 4c53ebe9494cbcf1d32eccc791871312ce54818f71a419bb68eef2f90019c07c
MD5 c595732fbdab9d9d0c13287ac6ee1db2
BLAKE2b-256 f5966024f666cf4e495f4cce95da3ae9521c677eae61a8d9ba054691bdf58b24

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for sciqlopplots-0.19.0-cp314-cp314-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 aaf6e59bcab27be244af3f956854fa333d05a6780e1260a35ac41ff4a21d437d
MD5 8389b9a47825ec8cd912399452d02eb8
BLAKE2b-256 2cb4bc64ef3d4ee81a9285a82395aa4d15eade48007751f29a5f3e0a19f8022c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for sciqlopplots-0.19.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 3ec2c4b03119172adf8d097ad9a0121b9d5d4dcc5857046a4aee5ea27349d761
MD5 f81fb2aed1d2e9ca88ba1b51e99e8159
BLAKE2b-256 9302b958506a6bca75b6cd9a44a0f8f4f25042c941f4028297b0b30d746b9bac

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for sciqlopplots-0.19.0-cp313-cp313-manylinux_2_39_aarch64.whl
Algorithm Hash digest
SHA256 f23554c91c26a642c8d7c7c788a05eeb5e26b2e2c8073ef55c2d0554b43c9a3f
MD5 f1e8d537950996c1b0515feb253054ac
BLAKE2b-256 5f7e195486577ec099aab1370a0a07fc1feeb4810d7c0acae5e354f6002b2ea6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for sciqlopplots-0.19.0-cp313-cp313-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 bc5bbd9c39fd9ad0ea985047848a416194e335e3ae2a157411fe42b00838712b
MD5 51b6efde808dc61e65a05bc7a8c6b27e
BLAKE2b-256 6eb2117d9e8213aafd6be4164078525e89605344fff0d7ce1e3e15b1619675a5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for sciqlopplots-0.19.0-cp313-cp313-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 9fc275fe9ad62aacfcd0d53d7d1dd111e7f0703786422ae22e43a315487c9c32
MD5 94573d24d037966553fcda0c0017cc65
BLAKE2b-256 134bd83a7a4a716653dd75b8bac3af5e7f2d40a068fae609c32b84ff42237f2b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for sciqlopplots-0.19.0-cp313-cp313-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 88720d5f9972094fe8fa8404a6acf87a5d69f7593d23b39d0858d20329efcbe7
MD5 429c592601861202efa5ff3b006c3c79
BLAKE2b-256 f76b47ddfc7a217a4daf6c60c6bdf5b6e30db66270a7815120eba34114bc9f65

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for sciqlopplots-0.19.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 e3385a8c081f0d51e073d330f8ad37c0b70d85dd3daaae7e1ad3404e0698c5b5
MD5 394b51e981e5e214c1e76b9c711babc1
BLAKE2b-256 48a7373fdf55b38f03650cb1ff99104267f1aef202a1ab28248e035335adaabd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for sciqlopplots-0.19.0-cp312-cp312-manylinux_2_39_aarch64.whl
Algorithm Hash digest
SHA256 9905508a0f2640109f36772104af1eada0795425274fb26db0593c00a0ac44da
MD5 42224ace50123542267eb9b567df8a40
BLAKE2b-256 b61dfe88a4340dcda0847353348fffb90396df81a36a1efd711151193709bbce

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for sciqlopplots-0.19.0-cp312-cp312-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 344132d9f586805430e1a45254c7c6a6c249c7eb5c42c543f70c86185236e013
MD5 9ad35ece34708d276a942220f30588bf
BLAKE2b-256 07034426e62c025db1f97b06c95fd34bb0c8ab5cfb3c9f564fdc4b839cf97b25

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for sciqlopplots-0.19.0-cp312-cp312-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 7e6f7d6c1ebbf82ef5f5db1d502e443a822db60e0bc9601827c562e745f5ed38
MD5 f692603667ac3b550b3b8f09517d7ba7
BLAKE2b-256 9c06744d0d01ce675d2c2627bc105d8d6b21cd67db61dc3a38bc1a45a0e4d0fd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for sciqlopplots-0.19.0-cp312-cp312-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 6ec847ff0d3d5bceb8aeea4af38da6faa5e0060a49f8200785ebe2089c86c502
MD5 c0a05c48034daacd0c52214bfb2addc7
BLAKE2b-256 3abe4f93f198cee5e641d4c08d8e07951b32562afdcb05c902d6e1238a7eadc8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for sciqlopplots-0.19.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 94b38e43d8bc5371be0d49d38d362f2b990530ec225b92b1d651eca95d4d6937
MD5 7be48dc114448e2b762fd12bb3be138e
BLAKE2b-256 131b2967324e1323797b54dc47b1f614d61018ce6853c0cb285cbd765bdac36e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for sciqlopplots-0.19.0-cp311-cp311-manylinux_2_39_aarch64.whl
Algorithm Hash digest
SHA256 ad44a64fdef6148414c294c2ca63a758813662bf2051450bac4402503989ae65
MD5 1dcba8886061fc31ef754c591a27399f
BLAKE2b-256 0211fffc3fef4d07bf86c658d6a3bb4f5463ade5f539049982fb7999dd0b171c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for sciqlopplots-0.19.0-cp311-cp311-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 34a880bd060bfb9388852ccb8a21900e955edeead4df9766fdb02272aa3411ce
MD5 729d9fea20b93c60e55425f261a98669
BLAKE2b-256 004ee3889112e230e4751c9b4606d48235ad39febe155e06f4515c88f557c84f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for sciqlopplots-0.19.0-cp311-cp311-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 88fb3ee6f7ac4ea915a42f1ca9655bca5568c49b47112822e2bdc65df3da150c
MD5 9f7acc5c54491dcbc8db9c78e52ca7c2
BLAKE2b-256 79fa68c6eea6fefe2667372f15cd8c98cdef34ea9e94b7811edf00396ff0b814

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for sciqlopplots-0.19.0-cp311-cp311-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 0918e35c688027cd8907808a91f5dfe96564000a062861e5bd9b9029fa08e2dd
MD5 45c14ed1ee42379bb96218a7d85eed2f
BLAKE2b-256 cb2ca17118e9ad48824391c7bdf1ef462c4b751b10b8ae07cc7aaf3458d3294e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for sciqlopplots-0.19.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 4fba9981f87875c0f00020dcbf42048c3aa38333890b685f3b13e2e7019dc820
MD5 f458d51f10dac3b99702b2ecda87e6b6
BLAKE2b-256 bb82ae665b59489d48ad5d5df5f7eea8f922fcafc2085fe8c386c6160051d875

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for sciqlopplots-0.19.0-cp310-cp310-manylinux_2_39_aarch64.whl
Algorithm Hash digest
SHA256 3a007e83f2a404f6065dbdc4ab560bebaa48b402baf7e1eb33f4286e2372b5bd
MD5 e34f54ab66323814960ea1d43f4f2e06
BLAKE2b-256 0845f96107baf1386b35414c45c3d7e0566d6f36a086a25a98a050254ab13b49

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for sciqlopplots-0.19.0-cp310-cp310-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 0091d64c5d1cb2687311409d5159656e925e76a08658bbd52590982e1b6ab943
MD5 e910653f65afdfd454c17b85785a77db
BLAKE2b-256 19b3613a56d6898fc9e2e76f7265b0e6898e7aa415d8250b80fc6c92ceb7e03e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for sciqlopplots-0.19.0-cp310-cp310-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 a64d5c11e6b52e60c4085553a66bbcc9a1f274d9b4cb9c9a44d5d7cce8ba9d17
MD5 95cd6c5ebf385466ecac9cc4659e1a14
BLAKE2b-256 4b463c3e0aa1d137d4b92c8b6df26e0adfdcbae28f89cd1c7b0a0e900ba55ba9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for sciqlopplots-0.19.0-cp310-cp310-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 7e5b02b6c392d9a08da12dd4be8dfbf0d36b759d3bfa3497da71b6657f84e7aa
MD5 93ceab76dc4962a0b1c4d907d10c59e1
BLAKE2b-256 013b05d2ff9dde325744bc5b5ccd636b563b9c3045b1ca036e90508d5dc95f66

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