【问题标题】:Python PyQtGraph - how to use setTicks?Python PyQtGraph - 如何使用 setTicks?
【发布时间】:2022-02-12 02:28:56
【问题描述】:

我只想在数据点的位置显示 xticks(所以 xticks == 波长)。我该怎么做?

这是我的代码:

from PyQt6.QtWidgets import QApplication
import pyqtgraph as pg

app = QApplication([])

wavelengths = [610, 680, 730, 760, 810, 860]
data = [239.23, 233.81, 187.27, 176.41, 172.35, 173.78]

pw = pg.plot(wavelengths, data, symbol="o")
pw.getPlotItem().getAxis('bottom').setTicks([wavelengths])

app.exec()

我尝试使用 AxisItem.setTicks(),但它会导致错误:

    for val, strn in level:
TypeError: cannot unpack non-iterable int object
Traceback (most recent call last):
  File "/home/jure/.local/share/virtualenvs/serial-plotting-gui-dWOiQ7Th/lib/python3.10/site-packages/pyqtgraph/graphicsItems/AxisItem.py", line 608, in paint
    specs = self.generateDrawSpecs(painter)
  File "/home/jure/.local/share/virtualenvs/serial-plotting-gui-dWOiQ7Th/lib/python3.10/site-packages/pyqtgraph/graphicsItems/AxisItem.py", line 936, in generateDrawSpecs

附:我也试过this SO answer,但它对我不起作用

【问题讨论】:

    标签: python pyqtgraph


    【解决方案1】:

    pyqtgraph 中的刻度总是有点棘手。它适用于轴上两个刻度之间的刻度间距。最重要的是,它定义了 MajorTick、MinorTicks 等的级别。使用 setTicks 您必须指定级别列表(我们只有 MajorTicks),并且每个级别都包含 (tick value, "tick string") 列表。

    因此,为了让您的示例正常工作,您必须使用这样的列表作为setTicks 方法的参数。

    这是您修改后的代码:

    from PyQt6.QtWidgets import QApplication
    import pyqtgraph as pg
    
    app = QApplication([])
    
    wavelengths = [610, 680, 730, 760, 810, 860]
    data = [239.23, 233.81, 187.27, 176.41, 172.35, 173.78]
    
    pw = pg.plot(wavelengths, data, symbol="o")
    
    pw.getPlotItem().getAxis('bottom').setTicks([[(wavelength, str(wavelength)) for wavelength in wavelengths]])
    
    app.exec()
    

    【讨论】:

      猜你喜欢
      • 2018-08-09
      • 2019-08-09
      • 2015-03-25
      • 2015-06-21
      • 2017-12-16
      • 2017-06-30
      • 2020-07-09
      • 2020-07-30
      • 2021-06-26
      相关资源
      最近更新 更多