qt中提供一个三维数据可视化模块(data visualization),可以绘制三维柱状图、三维散点图、三维曲面等。在pyqt5的缺省安装包中,并为集成数据可视化模块,要使用它,需要另行安装pyqtdatavisualization包。运行命令
pip install pyqtdatavisualization
安装该模块,就可以使用了。
无论是三维柱状图,三维散点图,还是三维曲面等图形,它们都继承自qabstract3dgraph类,qabstract3dgraph类为图形提供了一个窗口和渲染循环。
qabstract3dgraph是qwindow的子类,并为它的继承类提供渲染循环,在程序中不应该直接使用这个类,而是使用其子类。
除opengl es2环境(qt data visualization不支持抗锯齿)外,c ++上的抗锯齿默认情况下处于打开状态。
注意:
qabstract3一百年dgraphqt::framelesswindowhint默认情况下将窗口标志设置为打开。如果要将图形窗口显示为带有常规窗口框架的独立窗口,请在构造图形后清除此标志。例如:
bars = q3dbars()bars.tflags(bars.flags() ^ qt.framelesswindowhint)
qabstract3dgraph常用方法:
scene(lf):返回场景q3dscene()对象。tactiveinputhandler(lf, inputhandler):将inputhandler设置为图形中使用的活动输入处理程序。tact软弱的近义词ivetheme(lf, theme):将theme设置为要用于图形的活动主题。taspectratio(lf, ratio):设置图形在水平面上的最长轴与y轴之间的比例。默认为2.0。此设置对q3dbars无效。thorizontalaspectratio(lf, ratio):x轴和z轴之间的图形缩放比例。值0.0表示自动缩放,缺省值为0.0。tlocale(lf, locale):设置用于格式化各种数字标签的语言环境。tmargin(lf, margin):设置用于可绘制图形区域边缘和图形背景边缘之间的空间的绝对值。如果边距值为负,则边距是自动确定的,并且可以根据系列中项目的大小和图形的类型而变化。如果图形宽高比未从默认值更改,则该值将解释为y轴范围的一部分。默认为-1.0。tmeasurefps(lf, enable):设置是否连续进行渲染而不是按需进行渲染。toptimizationhi高三英语nts(lf, hints):设置默认模式还是静态模式还是渲染优化模式。默认模式以合理的性能水平提供完整的功能集。静态模式可优化图形渲染,是大型不变数据集的理想选择。动态数据更改和项目轮换速度较慢。没有优化选择,因此不建议将静态模式与海量数据集一起使用。静态优化仅适用于散点图。torthoprojection(lf, enable):设置是否使用正投影来显示图形。tpolar(lf, enable):设置是否将水平轴更改为极坐标轴。如果为true,则x轴成为角轴,z轴成为径向轴。极坐标模式不适用于条形图。默认为fal。tradiallabelof我的同音字ft(lf, offt):设置径向极坐标轴的轴标签的归一化水平偏移。该值0.0指示应在0角角度轴网格线旁边绘制标签。该值1.0表示标签是在图形背景边缘的通常位置绘制的。默认为1.0。treflection(lf, enable):设置是否打开floor反射。仅影响q3dbars。tre哪里有封闭学校flectivity(lf, reflectivity):设置floor反射率,较大的数字会使地板更具反射性。有效范围是[0…1]。默认为0.5。仅影响q3dbars。
tlectionmode(lf, mode):设置图形条目的选择方式。tshadowquality(lf, quality):设置阴影的质量级别。q3dbars类提供用于渲染3d柱状图的方法。使用q3dbars可以开发3d柱状图,并通过旋转场景来查看它们。按住鼠标右键并移动鼠标即可完成旋转。缩放是通过鼠标滚轮完成的。选择(如果启用)是通过鼠标左键完成的。可以通过单击鼠标滚轮将场景重置为默认摄像机视图。
如果未显示地给q3dbars设置坐标轴,q3dbars会创建没有标签的临时默认坐标轴。可以通过相应方法访问这些默认坐标轴,一旦为某一方向显示地设置了坐标轴,则该方向上的默认坐标轴会自动被摧毁。
q3dbars支持同时显示多个数据序列。并且不要求所有的数据序列都具有相同数量的行和列。如果未明确定义行和列的坐标轴,则行和列的标签数据取自图形中第一个添加的数据序列。
q3dbars常用方法:
addaxis(lf, axis): 将axis添加到图形。通过addaxis添加的轴尚未使用,addaxis仅用于将axis的所有权给与图形。axis不能为空或添加到另一个图形中。addries(lf, ries):将3d条状图形序列ries添加到图形中。一个图形可以包含多个图形序列,但只能包含一组轴,因此所有序列的行和列都必须匹配才能使可视化数据有意义。如果图形具有多个可见序列,则在标签未显式设置为轴的情况下,只有主图形序列会在轴上生成行或列标签。tbarspacing(lf, spacing):设置x和z轴之间bar的距离,缺省为(1.0, 1.0)。tbarspacingrelative(lf, relative):设置间距是绝对值还是相对于bar的厚度的。缺省为true。tbarthickness(lf, thicknessratio):设置x和z轴之间bar的厚度,该值1.0表示条形图的宽度是其深的0.5两倍。缺省值为1.0。tcolumnaxis(lf, axis):设置连接到活动列的坐标轴。tfloorlevel(lf, level):设置y轴数据坐标中条形图的最低水平值,默认为0。tmultiriesuniform(lf, uniform):设置是否要按比例将比例尺设置为单个图形序列比例尺来缩放比例。缺省为fal。tprimaryries(lf,ries):设置图形的主序列。trowaxis(lf, axis):设置连接到活动行的坐标轴。tvalueaxis(lf, axis):将有效值轴(y轴)设置为axis。q3dbars常用信号:
barspacingchanged(lf, spacing):当x和z轴之间bar的间距发生改变,发出此信号。barspacingrelativechanged(lf, relative):当间距方式发生改变,发出此信号。barthicknesschanged(lf, thicknessratio):当bar的厚度发生改变,发出此信号。columnaxischanged(lf, axis):当连接到活动列的坐标轴发生改变时,发出此信号。floorlevelchanged(lf, level):当y轴数据坐标中条形图的最低水平值发生改变时,发出此信号。multiriesuniformchanged(lf, uniform):当图形序列的比例尺设置发生改变时,发出此信号。primaryrieschanged(lf, ries):当图形的主序列发生变化时,发出此信号。rowaxischanged(lf, axis):当连接到活动行的坐标轴发生改变时,发出此信号。lectedrieschanged(lf, ries):当所选的图像序列发生改变时,发出此信号。valueaxischanged(lf, axis):当有效值轴(y轴)发生改变时,发出此信号。qbar3dries类表示3d条形图中的数据序列。它管理系列特定的视觉元素以及序列数据(通过数据代理)。如果没有为该序列显式设置任何数据代理,则该序列将创建一个默认代理。设置另一个代理将破坏现有代理以及所有添加到其中的数据。
qbar3dries常用函数:
tdataproxy(lf, proxy):保存活动数据代理。tmeshangle(lf, angle):设置数据序列旋转角度(以度为单位)。tlectedbar(lf,position):设置选中的条形图序列。qbar3dries常用信号:
dataproxychanged(lf, proxy): 当数据代理发生了改变,发出此信号。meshanglechanged(lf, angle):当数据序列的旋转角度发生了改变,发出此信号。lectedbarchanged(lf, position):当选中的条形图序列发生改变时,发出此信号。示例代码展示了如果构建一个q3dbars图形,完整代码如下:
importsysfrompyqt5.qtcoreimportqtfrompyqt5.qtwidgetsimportqapplicationfrompyqt5.qtdatavisualizationimportq3dbars,qbar3dries,qbardataitem,q3dcameraif__name__=='__main__':app=qapplication(sys.argv)bars=q3dbars()bars.tflags(bars.flags()^qt.framelesswindowhint)bars.rowaxis().trange(0,4)ries=qbar3dries()data=[]data.append(qbardataitem(1.0))data.append(qbardataitem(3.0))data.append(qbardataitem(7.5))data.append(qbardataitem(5.0))data.append(qbardataitem(2.2))ries.dataproxy().addrow(data)bars.addries(ries)#调整相机位置,更好的角度来观察柱状图camera=bars.scene().activecamera()camera.tcamerapret(q3dcamera.camerapretisometricright)bars.ttitle('实战qtforpython:3d柱状图演示')bars.resize(480,360)bars.show()sys.exit(app.exec())
运行结果如下图:
3d柱状图示例
本文发布于:2023-04-05 21:11:44,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/0e636b0df555a2b1b11101eeca2cd7e2.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:3d柱状图颜色怎么设置(立体柱形图制作方法).doc
本文 PDF 下载地址:3d柱状图颜色怎么设置(立体柱形图制作方法).pdf
留言与评论(共有 0 条评论) |