Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python pyqtgraph:在不同的绘图中对齐x轴的刻度_Python_Pyqtgraph - Fatal编程技术网

Python pyqtgraph:在不同的绘图中对齐x轴的刻度

Python pyqtgraph:在不同的绘图中对齐x轴的刻度,python,pyqtgraph,Python,Pyqtgraph,这是一个后续行动 问题是当其中一个图被重新缩放时,如何适应多个PyQT图的x轴缩放。我想要的结果是,所有图形的刻度完全对齐,因此您可以直接比较两个图形的内容 给定的答案记录了这项任务,即根据变化重新缩放图形,但当图形的内容不同时,y轴的描述往往大小不同,这不知怎么搞砸了一切 例如,在下图中,我调整了底部的绘图,使其大致覆盖0-100范围。奇怪的是,上面的情节显示了更大的间隔 你知道如何在重新缩放时对齐刻度吗 示例的源代码: import pyqtgraph as pg from pyqtgra

这是一个后续行动

问题是当其中一个图被重新缩放时,如何适应多个PyQT图的x轴缩放。我想要的结果是,所有图形的刻度完全对齐,因此您可以直接比较两个图形的内容

给定的答案记录了这项任务,即根据变化重新缩放图形,但当图形的内容不同时,y轴的描述往往大小不同,这不知怎么搞砸了一切

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

你知道如何在重新缩放时对齐刻度吗

示例的源代码:

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_())

我刚刚找到了问题的答案

我们可以通过
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_())