python - pyqtgraph:对齐不同图中x轴的刻度

标签 python pyqtgraph

这是 this question 的后续内容.

问题是当其中一个图重新缩放时如何调整多个 pyqtgraph 的 x 轴缩放。我想要的结果是所有图表的刻度完美对齐,以便您可以直接比较两个图表的内容。

给定的答案存档了该任务,即根据变化重新缩放图表,但是当图表的内容不同时,y 轴描述往往具有不同的大小,这会以某种方式弄乱一切。

例如,在下图中,我调整了底部图以大致覆盖 0-100 范围。奇怪的是,上面的图显示了更大的间隔。

有什么想法如何在重新缩放时对齐刻度吗?

enter image description here

示例源代码:

import pyqtgraph as pg
from pyqtgraph.Qt import QtCore, QtGui
import numpy as np
from pyqtgraph.dockarea import *
import sys


def onSigRangeChanged(r):
    w1.sigRangeChanged.disconnect(onSigRangeChanged)
    w2.sigRangeChanged.disconnect(onSigRangeChanged)
    if w1==r:
        w2.setRange(xRange=r.getAxis('bottom').range)
    elif w2 == r:
        w1.setRange(xRange=r.getAxis('bottom').range)

    w1.sigRangeChanged.connect(onSigRangeChanged)
    w2.sigRangeChanged.connect(onSigRangeChanged)

app = QtGui.QApplication(sys.argv)

win = QtGui.QMainWindow()
area = DockArea()
win.setCentralWidget(area)
win.resize(1000,500)
win.setWindowTitle('pyqtgraph example: dockarea')


d1 = Dock("Dock1")
d2 = Dock("Dock2")
area.addDock(d1, 'bottom')
area.addDock(d2, 'bottom', d1)

w1 = pg.PlotWidget(title="Dock 1 plot")
w1.plot(np.random.normal(size=100)*1e12)
w1.plotItem.showGrid(x=True,y=True,alpha=1)
d1.addWidget(w1)

w2 = pg.PlotWidget(title="Dock 2 plot")
w2.plot(np.random.normal(size=100))
w2.plotItem.showGrid(x=True,y=True,alpha=1)
d2.addWidget(w2)

w1.sigRangeChanged.connect(onSigRangeChanged)
w2.sigRangeChanged.connect(onSigRangeChanged)

win.show()

sys.exit(app.exec_())

最佳答案

我刚刚在 this 中找到了答案问题。

我们可以通过 w2.setXLink(w1) 直接链接轴刻度,而不是连接到 sigRangeChanged 事件。当然,我们必须删除与 sigRangeChanged 的​​连接,否则天平会飞向天空。下面是示例代码:

import pyqtgraph as pg
from pyqtgraph.Qt import QtCore, QtGui
import numpy as np
from pyqtgraph.dockarea import *
import sys

app = QtGui.QApplication(sys.argv)

win = QtGui.QMainWindow()
area = DockArea()
win.setCentralWidget(area)
win.resize(1000,500)
win.setWindowTitle('pyqtgraph example: dockarea')


d1 = Dock("Dock1")
d2 = Dock("Dock2")
area.addDock(d1, 'bottom')
area.addDock(d2, 'bottom', d1)

w1 = pg.PlotWidget(title="Dock 1 plot")
w1.plot(np.random.normal(size=100)*1e12)
w1.plotItem.showGrid(x=True,y=True,alpha=1)
d1.addWidget(w1)

w2 = pg.PlotWidget(title="Dock 2 plot")
w2.plot(np.random.normal(size=100))
w2.plotItem.showGrid(x=True,y=True,alpha=1)
w2.setXLink(w1)
d2.addWidget(w2)

win.show()

sys.exit(app.exec_())

关于python - pyqtgraph:对齐不同图中x轴的刻度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44612914/

相关文章:

python - 退出 PyQT 应用程序时出现段错误

python - pyqtgraph:为图中的线条添加图例

python - #ERROR使用棋盘计算内在参数

python - Pika SelectConnection 适配器的 close() 方法不会关闭连接

python - 在 tensorflow 中微调神经网络

python - 如何将字典 kwargs 输入到 matplotlib 图例例程中?

python - 图表 (pyqtgraph) 未在 QML 生成的窗口中绘制

python - pyqtgraph ImageView 在多线程时卡住

python - finplot 作为布局中的小部件

python - 由于 cffi.api.CDefError 无法使用 pyinstaller