``` pg.PlotWidget() ```
时间: 2024-05-30 15:06:06 浏览: 198
pg055axibridgepcie_055PG.com_055pg.com_www.055PG.COM_https//:055
5星 · 资源好评率100%
`pg.PlotWidget()` 是 pyqtgraph 库中的一个类,用于创建一个可交互的绘图窗口。
以下是对代码逐行逐段的解释:
```python
import pyqtgraph as pg
from pyqtgraph.Qt import QtGui
import numpy as np
```
- `import pyqtgraph as pg`:导入 pyqtgraph 库,并将其重命名为 `pg`。
- `from pyqtgraph.Qt import QtGui`:从 pyqtgraph.Qt 模块中导入 QtGui。
- `import numpy as np`:导入 NumPy 库,并将其重命名为 `np`。
```python
app = QtGui.QApplication([])
win = pg.GraphicsWindow()
win.setWindowTitle('pyqtgraph example: Plotting')
```
- `app = QtGui.QApplication([])`:创建一个 Qt 应用程序对象,该对象是所有 Qt GUI 应用程序的基础。
- `win = pg.GraphicsWindow()`:创建一个 Pyqtgraph 中的 `GraphicsWindow` 对象,用于显示绘图窗口。
- `win.setWindowTitle('pyqtgraph example: Plotting')`:设置绘图窗口的标题为 `'pyqtgraph example: Plotting'`。
```python
p1 = win.addPlot(title="Basic array plotting", y=np.random.normal(size=100))
```
- `p1 = win.addPlot(title="Basic array plotting", y=np.random.normal(size=100))`:在绘图窗口 `win` 中添加一个新的绘图对象 `p1`,并设置其标题为 `'Basic array plotting'`。同时,将随机生成的 100 个标准正态分布的数据作为 `y` 值传入。
```python
x = np.arange(1000)
y = np.random.normal(size=(3, 1000)).cumsum(axis=1)
p2 = win.addPlot(title="Multiple curves")
for i in range(3):
p2.plot(x, y[i], pen=(i,3))
```
- `x = np.arange(1000)`:生成一个包含 1000 个元素的 NumPy 数组,从 0 到 999。
- `y = np.random.normal(size=(3, 1000)).cumsum(axis=1)`:生成一个形状为 `(3, 1000)` 的二维 NumPy 数组 `y`,其中每行都是一个包含 1000 个元素的标准正态分布序列,并使用 `cumsum(axis=1)` 对每行进行累加。
- `p2 = win.addPlot(title="Multiple curves")`:在绘图窗口 `win` 中添加一个新的绘图对象 `p2`,并设置其标题为 `'Multiple curves'`。
- `for i in range(3): p2.plot(x, y[i], pen=(i,3))`:循环三次,每次将第 i 行数据作为 `y` 值,第 i 个颜色和线宽组成的元组作为笔画参数传入 `p2.plot()` 函数中,绘制三条曲线。
```python
win.nextRow()
p3 = win.addPlot(title="Drawing with points")
x = np.arange(0, 10*np.pi, 0.1)
y = np.sin(x)
p3.plot(x, y, pen=None, symbol='o', symbolPen=None, symbolSize=5, symbolBrush=('b'))
```
- `win.nextRow()`:在绘图窗口中创建一个新的行。
- `p3 = win.addPlot(title="Drawing with points")`:在新行中添加一个新的绘图对象 `p3`,并设置其标题为 `'Drawing with points'`。
- `x = np.arange(0, 10*np.pi, 0.1)`:生成一个从 0 到 $10\pi$ 的区间内,以 $0.1$ 为步长的一维 NumPy 数组。
- `y = np.sin(x)`:计算 $y=\sin(x)$ 在上述区间内的取值。
- `p3.plot(x, y, pen=None, symbol='o', symbolPen=None, symbolSize=5, symbolBrush=('b'))`:将 `(x, y)` 数据点序列绘制在 `p3` 中。其中,参数 `pen=None` 表示不使用线条;参数 `symbol='o'` 表示使用圆形数据点;参数 `symbolPen=None` 表示不使用数据点边界;参数 `symbolSize=5` 表示数据点大小为 $5$;参数 `symbolBrush=('b')` 表示数据点填充色为蓝色。
```python
win.nextRow()
p4 = win.addPlot(title="Parametric equation")
t = np.arange(0.0, 6.3, 0.1)
p4.plot(np.sin(t), np.cos(t))
```
- `win.nextRow()`:在绘图窗口中创建一个新的行。
- `p4 = win.addPlot(title="Parametric equation")`:在新行中添加一个新的绘图对象 `p4`,并设置其标题为 `'Parametric equation'`。
- `t = np.arange(0.0, 6.3, 0.1)`:生成一个从 $0$ 到 $2\pi$ 的区间内,以 $0.1$ 为步长的一维 NumPy 数组。
- `p4.plot(np.sin(t), np.cos(t))`:将 $(\sin(t), \cos(t))$ 数据点序列绘制在 `p4` 中。
阅读全文