diff --git a/src/dataprovider/pumpcalibprovider.py b/src/dataprovider/pumpcalibprovider.py index 07d7d17ecc99a53ba8a8500393a5e4840e31989f..65bcf5c9b6f8ab7ba5047af596f87a30ec71d8a7 100644 --- a/src/dataprovider/pumpcalibprovider.py +++ b/src/dataprovider/pumpcalibprovider.py @@ -38,7 +38,7 @@ class PumpCalibProvider: return runs_df def get_coef_df(self) -> pd.DataFrame: - df = pd.read_csv(filepath_or_buffer=self.data_dir + "COLPUMP_calib_coef.csv", + df = pd.read_csv(filepath_or_buffer=self.data_dir + self.pump_id + "_calib_coef.csv", sep=",", parse_dates=["first_run_datetime", "apply_datetime"]) df["first_run_datetime"] = df["first_run_datetime"].dt.tz_localize('UTC') diff --git a/src/uim/pumpcalibuim.py b/src/uim/pumpcalibuim.py index 77c2df04f049920c04e49f619643408af119318a..46038ab148fa0581194212fb20112af8ebae13e5 100644 --- a/src/uim/pumpcalibuim.py +++ b/src/uim/pumpcalibuim.py @@ -55,7 +55,6 @@ class PumpCalibUim: self.coef_df = self.pump_prvd.get_coef_df() self.__update_runs_plot__(self.runs_df, self.coef_df) - #################################################################### # Plot @@ -63,21 +62,31 @@ class PumpCalibUim: self.plot_item = pg.PlotItem() self.main_ui.pump_graphicsview_runs.setCentralItem(self.plot_item) + + # Create legend + self.legend = pg.LegendItem(offset=(40, 10)) + self.legend.setParentItem(self.plot_item.graphicsItem()) + self.runs_points_list = [] def __update_runs_plot__(self, runs_df: pd.DataFrame, coef_df: pd.DataFrame) -> None: + self.plot_item.clear() + # for item in self.runs_points_list: + # self.legend.removeItem(item) + self.legend = utils.clear_legend_items(self.legend) + # while self.legend.layout.count() > 0: + # self.legend.layout.removeAt(0) + # grphic_item = self.plot_item.graphicsItem() + # grphic_item.removeItem(self.legend) + # self.legend = pg.LegendItem(offset=(40, 10)) + # self.legend.setParentItem(self.plot_item) + + # Create the color scale color_map = pg.ColorMap(pos=[runs_df["calib_id_int"].min(), runs_df["calib_id_int"].max()], color=[[0, 0, 255], [0, 255, 0]]) - # Add legend - # self.plot_item.addLegend((100,60), offset=(70,30)) - # self.plot_item.plot([1, 3, 2, 4], pen='r', name='red plot') - # l = pg.LegendItem((100,60), offset=(70,30)) # args are (size, offset) - l = pg.LegendItem() # args are (size, offset) - l.setParentItem(self.plot_item.graphicsItem()) # Note we do NOT call plt.addItem in this case - # Add linear regression line for row_id, row in coef_df.iterrows(): reg_line = pg.InfiniteLine(pos=QPointF(0, row["intercept"]), @@ -89,26 +98,11 @@ class PumpCalibUim: # Add runs points for calib_id in runs_df["calib_id_int"].unique(): run_df = runs_df[runs_df["calib_id_int"] == calib_id] - # brushes = [pg.mkBrush(color=color) for color in color_map.mapToQColor(runs_df["calib_id_int"])] run_points = pg.ScatterPlotItem(run_df["rpm"], - run_df["flow"], - size=6, - brush=color_map.mapToQColor(calib_id), - name=run_df["calib_id_str"].unique()) - l.addItem(run_points,run_df["calib_id_str"].unique()) + run_df["flow"], + size=6, + brush=color_map.mapToQColor(calib_id), + name=run_df["calib_id_str"].unique()[0]) + self.legend.addItem(run_points, run_df["calib_id_str"].unique()[0]) self.plot_item.addItem(run_points) - - - - - # Add runs text - # for row_id, row in runs_df.iterrows(): - # if row_id != 1: - # continue - # run_text = pg.TextItem(text=row["calib_id_str"], - # # color=color_map.mapToQColor(row["calib_id_int"]), - # anchor=QPointF(row["rpm"], row["flow"])) - # # self.plot_item.getViewBox().disableAutoRange() - # self.plot_item.addItem(run_text) - # # self.plot_item.addItem(run_text, ignoreBounds=True) - + self.runs_points_list.append(run_points) diff --git a/src/utils.py b/src/utils.py index f57f3dbb2aee1105f29a746a63eaad1da409ac79..d7218e70507bb595816260fa9080b2b29c473425 100644 --- a/src/utils.py +++ b/src/utils.py @@ -44,6 +44,24 @@ class TimeAxisItem(pg.AxisItem): return tick_strings +def clear_legend_items(legend_item: pg.LegendItem) -> pg.LegendItem: + """Remove all the elements of the input `legend_item`. + + Parameters + ---------- + legend_item: pg.LegendItem + Legend item to be emptied. + + Returns + ------- + pg.LegendItem: + Same as input, but empty. + """ + for sample, label in legend_item.items: + legend_item.removeItem(label.text) + return legend_item + + def highlight_row(table: QTableWidget, highlighted_row_id: int, highlighted_row_color: QColor = QColor(173, 216, 230), other_rows_color: QColor = QColor(255, 255, 255)) -> None: