PyQtGraph - High Performance Visualization for All Platforms

Ognyan Moore, Nathan Jessurun, Martin Chase, Nils Nemitz, Luke Campagnola
{"title":"PyQtGraph - High Performance Visualization for All Platforms","authors":"Ognyan Moore, Nathan Jessurun, Martin Chase, Nils Nemitz, Luke Campagnola","doi":"10.25080/gerudo-f2bc6f59-00e","DOIUrl":null,"url":null,"abstract":"—PyQtGraph is a plotting library with high performance, cross-platform support and interactivity as its primary objectives. These goals are achieved by connecting the Qt GUI framework and the scientific Python ecosystem. The end result is a plotting library that supports using native python data types and NumPy arrays to drive interactive visualizations on all major operating systems. Whereas most scientific visualization tools for Python are oriented around publication-quality plotting and browser-based user interaction, PyQtGraph occupies a niche for applications in data analysis and hardware control that require real-time visualization and interactivity in a desktop environment. The well-established framework supports line plots, scatter plots, and images, including time-series 3D data represented as 4D arrays, in addition to the basic drawing primitives provided by Qt. For datasets up to several hundred thousand points, real-time rendering speed is achieved by optimized interaction with the Python bindings of the Qt framework. For enhanced image processing capabilities, PyQtGraph optionally integrates with CUDA. This ensures rendering capabilities are scalable with increasing data demands. Moreover, this improvement is enabled simply by installing the CuPy[1] library, i.e. requiring no in-depth user configurations. PyQtGraph provides interactivity not only for panning and scaling, but also through mouse hover, click, drag events and other common native interactions. Since PyQtGraph uses the Qt framework, the user can substitute their own intended application behavior to those events if they feel the library defaults are not appropriate. This flexibility allows the development of customized and streamlined user interfaces for data manipulation. The included parameter tree framework allows straightforward interactions with arbitrary user functions and configuration settings. Callbacks execute on changing parameter values, even asynchronously if requested. An active developer community and regular release cycles indicate and encourage further library development. PyQtGraph’s support cycle is synchronized with the NEP-29[2] standard, ensuring most popular scientific python modules are continually compatible with each release. PyQtGraph is available through pypi.org (https://pypi.org/project/pyqtgraph/), conda-forge (https:/ anaconda.org/conda-forge/pyqtgraph) and GitHub (https://github.com/pyqtgraph/pyqtgraph).","PeriodicalId":364654,"journal":{"name":"Proceedings of the Python in Science Conference","volume":"15 1","pages":"0"},"PeriodicalIF":0.0000,"publicationDate":"1900-01-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"0","resultStr":null,"platform":"Semanticscholar","paperid":null,"PeriodicalName":"Proceedings of the Python in Science Conference","FirstCategoryId":"1085","ListUrlMain":"https://doi.org/10.25080/gerudo-f2bc6f59-00e","RegionNum":0,"RegionCategory":null,"ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"","JCRName":"","Score":null,"Total":0}
引用次数: 0

Abstract

—PyQtGraph is a plotting library with high performance, cross-platform support and interactivity as its primary objectives. These goals are achieved by connecting the Qt GUI framework and the scientific Python ecosystem. The end result is a plotting library that supports using native python data types and NumPy arrays to drive interactive visualizations on all major operating systems. Whereas most scientific visualization tools for Python are oriented around publication-quality plotting and browser-based user interaction, PyQtGraph occupies a niche for applications in data analysis and hardware control that require real-time visualization and interactivity in a desktop environment. The well-established framework supports line plots, scatter plots, and images, including time-series 3D data represented as 4D arrays, in addition to the basic drawing primitives provided by Qt. For datasets up to several hundred thousand points, real-time rendering speed is achieved by optimized interaction with the Python bindings of the Qt framework. For enhanced image processing capabilities, PyQtGraph optionally integrates with CUDA. This ensures rendering capabilities are scalable with increasing data demands. Moreover, this improvement is enabled simply by installing the CuPy[1] library, i.e. requiring no in-depth user configurations. PyQtGraph provides interactivity not only for panning and scaling, but also through mouse hover, click, drag events and other common native interactions. Since PyQtGraph uses the Qt framework, the user can substitute their own intended application behavior to those events if they feel the library defaults are not appropriate. This flexibility allows the development of customized and streamlined user interfaces for data manipulation. The included parameter tree framework allows straightforward interactions with arbitrary user functions and configuration settings. Callbacks execute on changing parameter values, even asynchronously if requested. An active developer community and regular release cycles indicate and encourage further library development. PyQtGraph’s support cycle is synchronized with the NEP-29[2] standard, ensuring most popular scientific python modules are continually compatible with each release. PyQtGraph is available through pypi.org (https://pypi.org/project/pyqtgraph/), conda-forge (https:/ anaconda.org/conda-forge/pyqtgraph) and GitHub (https://github.com/pyqtgraph/pyqtgraph).
PyQtGraph -所有平台的高性能可视化
pyqtgraph是一个以高性能、跨平台支持和交互性为主要目标的绘图库。这些目标是通过连接Qt GUI框架和科学的Python生态系统来实现的。最终的结果是一个绘图库,它支持使用本地python数据类型和NumPy数组来驱动所有主要操作系统上的交互式可视化。Python的大多数科学可视化工具都是面向出版质量的绘图和基于浏览器的用户交互,PyQtGraph在数据分析和硬件控制应用程序中占有一席之地,这些应用程序需要在桌面环境中实时可视化和交互性。除了Qt提供的基本绘图原语外,完善的框架还支持线形图、散点图和图像,包括以4D数组表示的时间序列3D数据。对于多达几十万点的数据集,通过与Qt框架的Python绑定的优化交互,实现了实时渲染速度。为了增强图像处理能力,PyQtGraph可选择与CUDA集成。这确保了呈现功能可以随着数据需求的增加而扩展。此外,只需安装CuPy[1]库就可以实现这种改进,也就是说,不需要深入的用户配置。PyQtGraph不仅为平移和缩放提供交互性,还通过鼠标悬停、单击、拖动事件和其他常见的本机交互提供交互性。由于PyQtGraph使用Qt框架,如果用户觉得库默认值不合适,他们可以将自己预期的应用程序行为替换为这些事件。这种灵活性允许开发用于数据操作的定制和流线型用户界面。所包含的参数树框架允许与任意用户函数和配置设置进行直接交互。回调在改变参数值时执行,如果请求的话,甚至可以异步执行。活跃的开发人员社区和定期的发布周期表明并鼓励进一步的库开发。PyQtGraph的支持周期与NEP-29[2]标准同步,确保最流行的科学python模块与每个版本持续兼容。PyQtGraph可以通过pypi.org (https://pypi.org/project/pyqtgraph/)、conda-forge (https:/ anaconda.org/conda-forge/pyqtgraph)和GitHub (https://github.com/pyqtgraph/pyqtgraph)获得。
本文章由计算机程序翻译,如有差异,请以英文原文为准。
求助全文
约1分钟内获得全文 求助全文
来源期刊
自引率
0.00%
发文量
0
×
引用
GB/T 7714-2015
复制
MLA
复制
APA
复制
导出至
BibTeX EndNote RefMan NoteFirst NoteExpress
×
提示
您的信息不完整,为了账户安全,请先补充。
现在去补充
×
提示
您因"违规操作"
具体请查看互助需知
我知道了
×
提示
确定
请完成安全验证×
copy
已复制链接
快去分享给好友吧!
我知道了
右上角分享
点击右上角分享
0
联系我们:info@booksci.cn Book学术提供免费学术资源搜索服务,方便国内外学者检索中英文文献。致力于提供最便捷和优质的服务体验。 Copyright © 2023 布克学术 All rights reserved.
京ICP备2023020795号-1
ghs 京公网安备 11010802042870号
Book学术文献互助
Book学术文献互助群
群 号:604180095
Book学术官方微信