【问题标题】:Hide plot axis but show labels隐藏绘图轴但显示标签
【发布时间】:2020-01-09 12:45:02
【问题描述】:

我正在尝试在 PyQt5 中使用 PyQtGraph 创建一个绘图,但在轴配置方面遇到了困难。我想隐藏轴、刻度和值,但保留我将动态更改的标签。我遇到的问题是当我隐藏轴时,标签也被隐藏了。有没有办法隐藏轴线并保留标签?

到目前为止,我只设法隐藏了刻度和值,而不是轴本身。这是我用来配置轴的代码。

desc = self.descriptors[i]
self.plots[i].showAxis('right')
self.plots[i].getAxis('right').enableAutoSIPrefix(enable=False)
self.plots[i].getAxis('right').setLabel(text=desc, units=None)
self.plots[i].getAxis('right').setStyle(tickLength=0, showValues=False)

这是我目前所拥有的。

这就是我想要实现的目标。纵轴缺失,但值仍然存在。

【问题讨论】:

    标签: python pyqt5 pyqtgraph


    【解决方案1】:

    一个技巧是将绘制轴和刻度线的笔设置为与背景相同的颜色。可能有一种更简单的方法来设置 pen kwarg,但是一个非常简单的 axisitem 子类就可以了。

    class MyStringAxis(pg.AxisItem):
    def __init__(self, *args, **kwargs):
        pg.AxisItem.__init__(self, *args, **kwargs)
    

    然后在你的情节上设置轴项。

    plot.setAxisItems(axisItems={'left': MyStringAxis(orientation='left', pen=(0, 0, 0, 
    0))}) 
    

    【讨论】:

      【解决方案2】:

      不幸的是,网格线和轴线共享同一支笔,因此使用 NoPen Qt.PenStyle,或将颜色设置为背景,也会删除网格线。但是,我们可以利用在绘制网格线时替换笔的 alpha 值这一事实。将轴项笔设置为使用默认颜色(前景),但 alpha 值为零:

      axis_pen = pyqtgraph.mkPen(pyqtgraph.getConfigOption('foreground') + (0, ))
      ...
      self.plots[i].getAxis('right').setPen(axis_pen)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-04
        相关资源
        最近更新 更多