Pyqtgraph,帮助理解源代码

时间:2017-08-25 10:11:10

标签: python pyqtgraph

我想了解库“PyQtGraph”的某些部分,特别是涉及2D绘图时。

在源代码中,两个python文件如下:PlotDataItem.pyPlotCurveItem.py(它们位于pyqtgraph/graphicsItems/)。但在这两个文件中,我没有看到任何绘图功能。我的意思是我们只有保存x和y数据的方法(self.yDataself.xData)。严格来说,绘制数据的方法在哪里? (相当于matplotlib中的draw()。)

编辑:  谢谢您的回答。我正在阅读源代码,是的,我发现ViewBox.addItem中有一些东西。事实上,我试图删除代码的某些部分,以查看曲线是否被删除。行:scene.addItem(item)和item.setParentItem(self.childGroup)似乎很重要。无论如何,你的意思是我必须专注于QGraphicsScene和QGraphicsView?你能否证实我PlotDataItem只是一个文件,其中x和y数据被“保存”并且没有“情节”?

1 个答案:

答案 0 :(得分:2)

简短的回答是PyQtGraph将绘图委托给Qt's Graphics View Framework。 PyQtGraph将创建QGraphicsScene并将QGraphicsItems添加到该场景。如果您将QGraphicsView对象连接到该场景,Qt将为您渲染该视图的变换(缩放,旋转等)场景。

因此PlotCurveItemPlotDataItemQGraphicsItem的后代。您可以通过调用scene()方法找出它们属于哪个场景。我花了一点力气找到PyQtGraph将项目添加到场景的位置。这是在ViewBox.addItem中完成的,由PlotItem.addItem调用,PlotWidget.addItem调用该// Create Hazelcast configuration with management-center enabled. Config config = new Config("instanceOne"); config.getManagementCenterConfig().setEnabled(true); // Pass the URL where you deployed management-center jar config.getManagementCenterConfig().setUrl("http://hostname:8080/mancenter"); //create hazelcast instance with config object. HazelcastInstance instanceOne = Hazelcast.newHazelcastInstance(config);

如果您想了解PyQtGraph,必须阅读Organization of Plotting Classes部分。但是,PyQtGraph类层次结构有时会因为多重继承和命名不一致而混淆(术语 item widget 会重载,并且一致的命名约定可能会导致很长时间和笨拙的名字)。我过去制作了一个UML图,以获得更好的概述(见下文)。蓝色类由PyQtGraph定义,黑色类是Qt类。它并不完整,并非所有PyQtGraph类都包含在内。

enter image description here