diff --git a/qcodes/plots/pyqtgraph.py b/qcodes/plots/pyqtgraph.py index bfd4c200072..7512a4ba0c6 100644 --- a/qcodes/plots/pyqtgraph.py +++ b/qcodes/plots/pyqtgraph.py @@ -526,9 +526,9 @@ def fixUnitScaling(self, startranges: Optional[Dict[str, Dict[str, Union[float,i for i, plot in enumerate(self.subplots): # make a dict mapping axis labels to axis positions for axis in ('x', 'y', 'z'): - if self.traces[i]['config'].get(axis): - unit = self.traces[i]['config'][axis].unit - if unit not in standardunits: + if self.traces[i]['config'].get(axis) is not None: + unit = getattr(self.traces[i]['config'][axis], 'unit', None) + if unit is not None and unit not in standardunits: if axis in ('x', 'y'): ax = plot.getAxis(axismapping[axis]) else: @@ -546,10 +546,10 @@ def fixUnitScaling(self, startranges: Optional[Dict[str, Dict[str, Union[float,i ax.update() # set limits either from dataset or - setarr = self.traces[i]['config'][axis].ndarray + setarr = getattr(self.traces[i]['config'][axis], 'ndarray', None) arrmin = None arrmax = None - if not np.all(np.isnan(setarr)): + if setarr and not np.all(np.isnan(setarr)): arrmax = setarr.max() arrmin = setarr.min() elif startranges is not None: @@ -557,7 +557,7 @@ def fixUnitScaling(self, startranges: Optional[Dict[str, Dict[str, Union[float,i paramname = self.traces[i]['config'][axis].full_name arrmax = startranges[paramname]['max'] arrmin = startranges[paramname]['min'] - except (IndexError, KeyError): + except (IndexError, KeyError, AttributeError): continue if axis == 'x': diff --git a/qcodes/tests/test_plots.py b/qcodes/tests/test_plots.py index 0e85d960d02..78ec6983014 100644 --- a/qcodes/tests/test_plots.py +++ b/qcodes/tests/test_plots.py @@ -6,6 +6,7 @@ - just test "window creation" """ from unittest import TestCase, skipIf +import numpy as np import os try: @@ -44,6 +45,25 @@ def test_creation(self): plotQ = QtPlot(remote=False, show_window=False, interval=0) plotQ.add_subplot() + def test_simple_plot(self): + plotQ = QtPlot(remote=False, show_window=False, interval=0) + plotQ.add_subplot() + + main_QtPlot = QtPlot( + window_title='Main plotmon of TestQtPlot', + figsize=(600, 400)) + + x = np.arange(0, 10e-6, 1e-9) + f = 2e6 + y = np.cos(2*np.pi*f*x) + + for j in range(4): + main_QtPlot.add(x=x, y=y, + xlabel='Time', xunit='s', + ylabel='Amplitude', yunit='V', + subplot=j+1, + symbol='o', symbolSize=5) + @skipIf(noMatPlot, '***matplotlib plotting cannot be tested***') class TestMatPlot(TestCase):