pyqtgraph,如何跟踪 log/linear 轴变换在链接轴之间的变化

pyqtgraph, how track log/linear axes transformation changes between linked axes

我有 3 个链接视图,由 X 轴链接。这很好用。然而,当我将一个图切换到 log X 模式时,其他图不会切换到 log x 模式,但它们会弹出以放大 x 轴的对数版本。

如何使 log X 变换适用于所有地块? 到目前为止,我只是使用代码

diViewWidget.setXLink(frViewWidget)
noiseViewWidget.setXLink(diViewWidget)

数据应如下所示:

但实际上是这样的:

基本上,要重现,您可以转到任何 2 个链接视图,右键单击并将转换设置为 log x。

我找到的解决方法是分别转到每个绘图并单独设置转换,但我希望它以编程方式发生。

谢谢,

-迦勒

https://groups.google.com/forum/#!msg/pyqtgraph/3686qqVHgpI/bmBAQ_sDKJIJ https://forum.qt.io/topic/39241/how-to-set-logarithmic-scale-on-a-qgraphicsview/2 我无法在单独的 PlotItem 上应用该修复程序,因此尝试广播更改后的复选框信号,它似乎有效

import pyqtgraph as pg

data = pg.np.random.normal(size=100)

app = pg.QtGui.QApplication([])
win = pg.GraphicsWindow()
p1 = win.addPlot(y=data)

win.nextRow()
p2 = win.addPlot(y=data)
p2.setXLink(p1)

win.nextRow()
p3 = win.addPlot(y=data)
p3.setXLink(p1)


def linkLogXChecks(plotitems):
    def broadcast(state):
        for p in plotitems:
            p.ctrl.logXCheck.setChecked(state)
    for p in plotitems:
        p.ctrl.logXCheck.toggled.connect(broadcast)

linkLogXChecks([p1, p2, p3])


pg.QtGui.QApplication.instance().exec_()
#learning qt i just found a better linkLogXChecks version

from itertools import permutations
def linkLogXChecks(plotitems):
    for a, b in permutations(plotitems, 2):
        a.ctrl.logXCheck.toggled.connect(b.ctrl.logXCheck.setChecked)