Short description
If the AxisItem receives a text argument on init we get an exception.
The range here should be set before the label here.
Code to reproduce
"""
This example demonstrates many of the 2D plotting capabilities
in pyqtgraph. All of the plots may be panned/scaled by dragging with
the left/right mouse buttons. Right click on any plot to show a context menu.
"""
import numpy as np
import pyqtgraph as pg
from pyqtgraph.Qt import QtCore
app = pg.mkQApp("Plotting Example")
#mw = QtWidgets.QMainWindow()
#mw.resize(800,800)
win = pg.GraphicsLayoutWidget(show=True, title="Basic plotting examples")
win.resize(1000,600)
win.setWindowTitle('pyqtgraph example: Plotting')
# Enable antialiasing for prettier plots
pg.setConfigOptions(antialias=True)
p1 = win.addPlot(title="Basic array plotting", y=np.random.normal(size=100))
p1.addItem(pg.AxisItem('bottom', text='sfas'))
p2 = win.addPlot(title="Multiple curves")
p2.plot(np.random.normal(size=100), pen=(255,0,0), name="Red curve")
p2.plot(np.random.normal(size=110)+5, pen=(0,255,0), name="Green curve")
p2.plot(np.random.normal(size=120)+10, pen=(0,0,255), name="Blue curve")
axis = pg.AxisItem(text="PLM")
p3 = win.addPlot(title="Drawing with points")
p3.plot(np.random.normal(size=100), pen=(200,200,200), symbolBrush=(255,0,0), symbolPen='w')
win.nextRow()
p4 = win.addPlot(title="Parametric, grid enabled")
x = np.cos(np.linspace(0, 2*np.pi, 1000))
y = np.sin(np.linspace(0, 4*np.pi, 1000))
p4.plot(x, y)
p4.showGrid(x=True, y=True)
p5 = win.addPlot(title="Scatter plot, axis labels, log scale")
x = np.random.normal(size=1000) * 1e-5
y = x*1000 + 0.005 * np.random.normal(size=1000)
y -= y.min()-1.0
mask = x > 1e-15
x = x[mask]
y = y[mask]
p5.plot(x, y, pen=None, symbol='t', symbolPen=None, symbolSize=10, symbolBrush=(100, 100, 255, 50))
p5.setLabel('left', "Y Axis", units='A')
p5.setLabel('bottom', "Y Axis", units='s')
p5.setLogMode(x=True, y=False)
p6 = win.addPlot(title="Updating plot")
curve = p6.plot(pen='y')
data = np.random.normal(size=(10,1000))
ptr = 0
def update():
global curve, data, ptr, p6
curve.setData(data[ptr%10])
if ptr == 0:
p6.enableAutoRange('xy', False) ## stop auto-scaling after the first data set is plotted
ptr += 1
timer = QtCore.QTimer()
timer.timeout.connect(update)
timer.start(50)
win.nextRow()
p7 = win.addPlot(title="Filled plot, axis disabled")
y = np.sin(np.linspace(0, 10, 1000)) + np.random.normal(size=1000, scale=0.1)
p7.plot(y, fillLevel=-0.3, brush=(50,50,200,100))
p7.showAxis('bottom', False)
x2 = np.linspace(-100, 100, 1000)
data2 = np.sin(x2) / x2
p8 = win.addPlot(title="Region Selection")
p8.plot(data2, pen=(255,255,255,200))
lr = pg.LinearRegionItem([400,700])
lr.setZValue(-10)
p8.addItem(lr)
p9 = win.addPlot(title="Zoom on selected region")
p9.plot(data2)
def updatePlot():
p9.setXRange(*lr.getRegion(), padding=0)
def updateRegion():
lr.setRegion(p9.getViewBox().viewRange()[0])
lr.sigRegionChanged.connect(updatePlot)
p9.sigXRangeChanged.connect(updateRegion)
updatePlot()
if __name__ == '__main__':
pg.exec()
Expected behavior
Real behavior
Traceback (most recent call last):
File "c:\Users\usr\01__Workspace\scratch.py", line 25, in <module>
p1.addItem(pg.AxisItem('bottom', text='sfas'))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\usr\01__Workspace\__venv_cp312\Lib\site-packages\pyqtgraph\graphicsItems\AxisItem.py", line 121, in __init__
self.setLabel(**args)
File "C:\Users\usr\01__Workspace\__venv_cp312\Lib\site-packages\pyqtgraph\graphicsItems\AxisItem.py", line 482, in setLabel
self.showLabel(visible)
File "C:\Users\usr\01__Workspace\__venv_cp312\Lib\site-packages\pyqtgraph\graphicsItems\AxisItem.py", line 435, in showLabel
self.updateAutoSIPrefix()
File "C:\Users\usr\01__Workspace\__venv_cp312\Lib\site-packages\pyqtgraph\graphicsItems\AxisItem.py", line 819, in updateAutoSIPrefix
_range = 10**np.array(self.range) if self.logMode else self.range
Tested environment(s)
- PyQtGraph version: df9d13b
- Qt Python binding: PySide6 6.7.3 Qt 6.7.3
- Python version: Python 3.12.4 (tags/v3.12.4:8e8a4ba, Jun 6 2024, 19:30:16) [MSC v.1940 64 bit (AMD64)]
- NumPy version: 2.2.6
- Operating system: Windows 11 x64
- Installation method: pip
Additional context
Short description
If the AxisItem receives a text argument on init we get an exception.
The range here should be set before the label here.
Code to reproduce
Expected behavior
Real behavior
Tested environment(s)
Additional context