📜  PyQtGraph - 获取条形图的场景位置(1)

📅  最后修改于: 2023-12-03 14:45:51.799000             🧑  作者: Mango

PyQtGraph - 获取条形图的场景位置

在使用PyQtGraph绘制条形图时,我们通常需要获取某个条形图的场景位置。在这篇文章中,我们将介绍如何从条形图中获取其场景位置。

步骤
1. 导入必要的库

我们需要导入PyQtGraph及PyQt5库来完成本教程:

import pyqtgraph as pg
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
2. 创建图形窗口

我们需要创建一个图形窗口,用于显示我们的条形图。这里我们使用QMainWindow类。

app = QApplication([])
win = QMainWindow()
win.resize(800, 600)
3. 创建BarGraphItem

接下来,我们需要创建一个BarGraphItem,用于绘制条形图。在创建BarGraphItem时,我们可以传入参数x和height。

x = [1, 2, 3, 4, 5]
height = [1, 2, 3, 4, 5]

bar = pg.BarGraphItem(x=x, height=height, width=0.8, brush='b')
4. 添加BarGraphItem到图形窗口

我们需要将BarGraphItem添加到图形窗口中,这样我们可以在图形窗口中看到绘制出的条形图。

view = pg.GraphicsView()
layout = pg.GraphicsLayout()
view.setCentralItem(layout)
win.setCentralWidget(view)

plot = layout.addPlot()
plot.addItem(bar)
5. 从BarGraphItem中获取场景位置

完成以上步骤后,我们需要从BarGraphItem对象中获取其场景位置。这里我们使用.sceneBoundingRect()方法来获取场景位置:

rect = bar.sceneBoundingRect()
6. 将场景位置转换成视图位置

我们需要将得到的场景位置转换成视图位置,这里我们使用mapToView()方法来完成。

view_rect = view.mapToView(rect)
7. 完整代码

最后,我们可以把所有步骤组合成一个完整的程序。

import pyqtgraph as pg
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *

app = QApplication([])

win = QMainWindow()
win.resize(800, 600)

x = [1, 2, 3, 4, 5]
height = [1, 2, 3, 4, 5]

bar = pg.BarGraphItem(x=x, height=height, width=0.8, brush='b')

view = pg.GraphicsView()
layout = pg.GraphicsLayout()
view.setCentralItem(layout)
win.setCentralWidget(view)

plot = layout.addPlot()
plot.addItem(bar)

rect = bar.sceneBoundingRect()
view_rect = view.mapToView(rect)

win.show()
app.exec()

以上就是获取PyQtGraph条形图的场景位置的方法。