我想了解库“PyQtGraph”的某些部分,特别是涉及2D绘图时。
在源代码中,两个python文件如下:PlotDataItem.py
和PlotCurveItem.py
(它们位于pyqtgraph/graphicsItems/
)。但在这两个文件中,我没有看到任何绘图功能。我的意思是我们只有保存x和y数据的方法(self.yData
和self.xData
)。严格来说,绘制数据的方法在哪里? (相当于matplotlib中的draw()
。)
编辑: 谢谢您的回答。我正在阅读源代码,是的,我发现ViewBox.addItem中有一些东西。事实上,我试图删除代码的某些部分,以查看曲线是否被删除。行:scene.addItem(item)和item.setParentItem(self.childGroup)似乎很重要。无论如何,你的意思是我必须专注于QGraphicsScene和QGraphicsView?你能否证实我PlotDataItem只是一个文件,其中x和y数据被“保存”并且没有“情节”?
答案 0 :(得分:2)
简短的回答是PyQtGraph将绘图委托给Qt's Graphics View Framework。 PyQtGraph将创建QGraphicsScene
并将QGraphicsItems
添加到该场景。如果您将QGraphicsView
对象连接到该场景,Qt将为您渲染该视图的变换(缩放,旋转等)场景。
因此PlotCurveItem
和PlotDataItem
是QGraphicsItem
的后代。您可以通过调用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类都包含在内。