def quick_plot(self): try: plot_dataset(self.ds) plt.show(block=True) except Exception as e: self.parent.show_error( 'Error', "Couldn't plot the data (likely due to a lack of data)", e)
def _plot_ds(ds: DataSet) -> None: try: # `get_data_by_id` might fail nplots = len(get_data_by_id(ds.run_id)) # TODO: might be a better way nrows = math.ceil(nplots / 2) if nplots != 1 else 1 ncols = 2 if nplots != 1 else 1 fig, axes = plt.subplots(nrows, ncols, figsize=(6 * ncols, 4 * nrows)) # `plot_dataset` might also fail. plot_dataset(ds, axes=axes.flatten()) fig.tight_layout() plt.show(fig) except Exception as e: print(e) # TODO: print complete traceback
def plot( data: DataSetProtocol, save_pdf: bool = True, save_png: bool = True ) -> Tuple[DataSetProtocol, List[matplotlib.axes.Axes], List[Optional[matplotlib.colorbar.Colorbar]], ]: """ The utility function to plot results and save the figures either in pdf or png or both formats. Args: data: The QCoDeS dataset to be plotted. save_pdf: Save figure in pdf format. save_png: Save figure in png format. """ dataid = data.captured_run_id axes, cbs = plot_dataset(data) mainfolder = config.user.mainfolder experiment_name = data.exp_name sample_name = data.sample_name storage_dir = os.path.join(mainfolder, experiment_name, sample_name) os.makedirs(storage_dir, exist_ok=True) png_dir = os.path.join(storage_dir, 'png') pdf_dif = os.path.join(storage_dir, 'pdf') os.makedirs(png_dir, exist_ok=True) os.makedirs(pdf_dif, exist_ok=True) for i, ax in enumerate(axes): if save_pdf: full_path = os.path.join(pdf_dif, f'{dataid}_{i}.pdf') ax.figure.savefig(full_path, dpi=500) if save_png: full_path = os.path.join(png_dir, f'{dataid}_{i}.png') ax.figure.savefig(full_path, dpi=500) res = data, axes, cbs return res
def _plot_ds(ds: DataSet) -> None: plot_dataset(ds) # might fail plt.show()
def test_plot_dataset_2d_shaped(experiment, request, nan_setpoints, shifted): """ Test plotting of preshaped data on a grid that may or may not be shifted with and without nans in the set points. """ inst = DummyInstrument("dummy", gates=["s1", "m1", "s2"]) request.addfinalizer(inst.close) inst.m1.get = np.random.randn meas = Measurement() meas.register_parameter(inst.s1) meas.register_parameter(inst.s2) meas.register_parameter(inst.m1, setpoints=(inst.s1, inst.s2)) outer_shape = 10 inner_shape = 20 meas.set_shapes( detect_shape_of_measurement((inst.m1, ), (outer_shape, inner_shape))) shift = 0 with meas.run() as datasaver: try: for outer in np.linspace(0, 9, outer_shape): for inner in np.linspace(0 + shift, 10 + shift, inner_shape): datasaver.add_result((inst.s1, outer), (inst.s2, inner), (inst.m1, inst.m1())) if inner > 7 and outer > 6 and nan_setpoints: raise TerminateLoopException if shifted: shift += 1 except TerminateLoopException: pass axes, cbs = plot_dataset(datasaver.dataset) xlims = axes[0].get_xlim() ylims = axes[0].get_ylim() # check that this generates a QuadMesh which is the expected output of pcolormesh assert any( isinstance(mplobj, QuadMesh) for mplobj in axes[0].get_children()) if nan_setpoints and shifted: assert xlims[0] == -0.5 assert xlims[1] == 7.5 assert ylims[0] < 0 assert ylims[0] > -1.0 assert ylims[1] > 16 assert ylims[1] < 17 elif not nan_setpoints and shifted: assert xlims[0] == -0.5 assert xlims[1] == 9.5 assert ylims[0] < 0 assert ylims[0] > -1.0 assert ylims[1] > 19 assert ylims[1] < 20 elif nan_setpoints and not shifted: assert xlims[0] == -0.5 assert xlims[1] == 7.5 assert ylims[0] < 0 assert ylims[0] > -1.0 assert ylims[1] > 10 assert ylims[1] < 11 else: assert xlims[0] == -0.5 assert xlims[1] == 9.5 assert ylims[0] < 0 assert ylims[0] > -1.0 assert ylims[1] > 10 assert ylims[1] < 11