【问题标题】:pyqtgraph, how track log/linear axes transformation changes between linked axespyqtgraph,跟踪日志/线性轴转换如何在链接轴之间变化
【发布时间】:2015-06-18 16:35:34
【问题描述】:

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

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

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

数据应如下所示:

但实际上是这样的:

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

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

谢谢,

-迦勒

【问题讨论】:

    标签: pyqtgraph


    【解决方案1】:
    #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)
    

    【讨论】:

    • 聪明。我不知道 itertools。
    【解决方案2】:

    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 我无法在单独的 PlotItems 中应用该修复程序,因此尝试广播更改的复选框信号,它似乎工作

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

    【讨论】:

    • 哇!完美运行!谢谢,
    猜你喜欢
    • 2021-01-27
    • 2015-01-21
    • 2017-07-30
    • 2017-04-26
    • 1970-01-01
    • 2022-08-03
    • 2014-06-11
    • 1970-01-01
    • 2020-07-27
    相关资源
    最近更新 更多