简单罗列一下...
Qt对LGPL用户已经很不友好。官方的图表库均不采用LGPL授权。幸好还有几个第三方的可供Qt的LGPL用户使用:
- KD Chart【KDAB的商业产品,2022年8月份改为MIT协议】
- Qwt 【不活跃,样式老旧】
- JKQtPlotter
- PyQtGraph 【Python下面】
列表
图表库名称 | 许可类型 | 说明 |
---|---|---|
Qt Charts | GPLv3 / Commercial | Qt官方出品,对LGPL用户不友好 |
QCustomPlot | GPLv3 / Commercial | 对LGPL用户不友好 |
Qwt | Qwt License | 开源免费,可以在开源和闭源项目中使用。Qwt License 类似 LGPL,允许在闭源项目中动态链接使用。 |
KD Chart | MIT | KDAB出品,从3.0.0版本【2022年8月份】开始,采用MIT授权。 |
JKQtPlotter | LGPL | 对LGPL用户友好 |
QwtPlot3D | zlib | 采用zlib协议,对LGPL友好,不过开发早已停顿 |
ChartDirector | Commercial | 需要商业许可,适用于商业用途。提供免费试用版本,但需要购买许可证才能在正式项目中使用。 |
Qt
Qt官方有2D和3D图表库,但都不支持LGPL。
Qt Charts
Qt Charts 从Qt5.7 开始出现,官方出品,支持C++和QML。但是它采用GPLv3和商业授权发布,对LGPL用户不友好。
Qt Data Visualization
Qt Data Visualization 是 Qt 官方提供的一个模块,依赖于OpenGL,用于创建 三维数据可视化 应用。它使开发者能够轻松地将三维数据集可视化,支持多种三维图表类型,如 柱状图、散点图 和 曲面图 等。
采用GPLv3发布,对LGPL用户不友好。
Qt Graphs
是 Qt Data visualization 的后续版本。依赖qrhi抽象层,而不是直接依赖OpenGL。同样对LGPL用户不友好。
KDAB
KDAB 公司对Qt支持还是很不错的。只不过其在Qt5中开发的Qt3D模块,在Qt6中要退役了,比较可惜。Qt公司新的基于QtQucik的3D模块也不再支持LGPL。
KD Chart
KD Chart是KDAB的商业产品,在经历长期的开发停顿后,2022年发布3.0.0,变更为MIT授权。支持二维图表和甘特图。
注意,KDAB 的 KDreports 也改为MIT授权方式发布。
kdiagram
是KDE克隆的KD Chart的早期版本,采用 GPL 发布。
JKQtPlotter
JKQTPlotter 是一个基于 Qt 的开源库,专门用于绘制 二维科学图表。采用LGPL协议发布。
QCustomPlot
QCustomPlot 是一个基于 Qt 的开源 C++ 图形绘制库,专注于 二维数据可视化。它主要用于在 Qt Widgets 应用中嵌入高性能的自定义绘图功能,如 折线图、柱状图、散点图、直方图 等。有轻量和高效的特性。采用GPLv3和商业授权发布,对LGPL用户不友好。
Qwt
Qwt(Qt Widgets for Technical Applications)是一个基于 Qt 的开源库,专门用于在应用程序中创建 技术性图表 和 科学可视化工具。Qwt 提供了各种小部件(Widgets),帮助开发者绘制复杂的二维图表和进行数据可视化。
- 对LGPL用户友好
- 长期没有更新,界面不够现代
QwtPlot3D
基于Qt3、Qt4和OpenGL的3D图表库。开发早已停止。采用zlip协议
QChartViewer
QChartViewer 及其底层库 ChartDirector 由 Advanced Software Engineering Ltd. (ASE) 开发。这家公司专注于提供高性能的图表和可视化解决方案,ChartDirector 是其核心产品之一,广泛用于商业和技术应用中的数据可视化。
ChartDirector 是一个支持包括C++、C#、Python、perl、PHP、Java等多种编程语言的图表库的商业产品。
vtk
尽管和图表库没多大关系,还是先列出来。vtk采用BSD授权协议。对LGPL用户友好。
Python
在Python下,除了可以使用各个C++图表库的python绑定,还有一些特色库可用。有的是原生,有的是HTML和javascript。
部分列表如下
PyQtGraph
PyQtGraph 是一个用于 快速绘制交互式图表 和 数据可视化 的 Python 库,它基于 PyQt 或 PySide(Qt 的 Python 绑定),并且专注于 高性能的实时数据可视化。
采用 MIT 授权
matplotlib
matplotlib 支持使用Qt作为后端,可以和PyQt以及PySide集成。
另外还有一些基于matplotlib的库:
- https://seaborn.pydata.org/
- https://mpld3.github.io/
plotly
Plotly 的图表是通过 HTML 和 JavaScript 渲染的。无论是在 Python、R 还是 其他语言 中使用,Plotly 最终都会生成一段 HTML 文档,其中嵌入了 JavaScript 代码,用于在 Web 浏览器中渲染图表。采用MIT授权。
- Plotly Python 库:用于数据可视化的客户端库。
- Plotly.js:用于前端渲染的 JavaScript 库。
bokeh
Bokeh 是一个专注于 Python 的可视化库,能够与 Python 生态系统中的工具(如 NumPy、Pandas、Dask、Scikit-Learn 等)无缝集成。用户可以使用这些工具处理和分析数据,并将结果通过 Bokeh 转换为可视化图表。
Bokeh 的核心工作原理是将 Python 代码中的数据和图表配置转换为浏览器可以理解的 HTML 和 JavaScript。Bokeh 提供了一个 Bokeh.js 库,这个库在前端使用 JavaScript 渲染图表。Bokeh 会自动处理 Python 端和浏览器端的通信,用户只需编写 Python 代码,无需编写 JavaScript。
Vega-Altair
Altair 是一个声明式的可视化库,基于 Vega 和 Vega-Lite。Altair 允许用户通过简洁的语法创建复杂的可视化图表,专注于统计可视化。
参考
- https://doc.qt.io/qt-6/qtcharts-index.html
- https://www.qcustomplot.com/
- https://qwt.sourceforge.io/
- https://github.com/jkriege2/JKQtPlotter
- https://www.kdab.com/development-resources/qt-tools/kd-chart/
- https://github.com/KDAB/KDChart
- https://github.com/KDAB/KDReports
- https://qwtplot3d.sourceforge.net/
- https://www.advsofteng.com/doc/cdcppdoc/QChartViewer.htm
- https://github.com/KDE/kdiagram
- https://www.pyqtgraph.org/
- https://matplotlib.org/stable/gallery/user_interfaces/embedding_in_qt_sgskip.html
- https://github.com/plotly/plotly.py
- https://bokeh.org/
- https://altair-viz.github.io/