def _set_buttons(self, enable_reset, enable_save, enable_io): reset_button = Button(plt.axes([0.51, 0.01, 0.1, 0.035]), 'Reset') # [0.88, 0.01, 0.1, 0.035] reset_button.label.set_color('r') reset_button.label.set_fontweight('bold') reset_button.on_clicked(self._reset) if enable_reset: reset_button.set_active(True) else: reset_button.set_active(False) reset_button.ax.set_visible(False) textbox = TextBox( plt.axes([0.2, 0.06, 0.6, 0.095]), 'I/O', initial='' ) # [0.12, 0.01, 0.65, 0.06] [0.05,0.92,0.8,0.07] [0.025, 0.885, 0.75, 0.05] textbox.label.set_fontweight('bold') textbox.on_submit(self._evaluate_message) if enable_io: textbox.set_active(True) else: textbox.set_active(False) textbox.ax.set_visible(False) save_button = Button(plt.axes([0.39, 0.01, 0.1, 0.035]), 'Save') # [0.77, 0.01, 0.1, 0.035] save_button.label.set_fontweight('bold') save_button.on_clicked(self._quicksave) if enable_save: save_button.set_active(True) else: save_button.set_active(False) save_button.ax.set_visible(False) self._widgetlist[self.fignum.index(plt.gcf().number)] = (reset_button, textbox, save_button) self._textbox = textbox
df_suede=pd.read_csv("./data/export-stockholm2018.csv", skiprows=3) df_suede["Données annuelles"] = df_suede[["MIN_TEMPERATURE_C","MAX_TEMPERATURE_C"]].mean(axis=1) #Getting the average temperature of each day df_suede = df_suede[['DATE', "Données annuelles"]] df_estonie=pd.read_csv("./data/export-tallinn2018.csv", skiprows=3) df_estonie["Données annuelles"] = df_estonie[["MIN_TEMPERATURE_C","MAX_TEMPERATURE_C"]].mean(axis=1) #Getting the average temperature of each day df_estonie = df_estonie[['DATE', "Données annuelles"]] df_lettonie=pd.read_csv("./data/export-riga2018.csv", skiprows=3) df_lettonie["Données annuelles"] = df_lettonie[["MIN_TEMPERATURE_C","MAX_TEMPERATURE_C"]].mean(axis=1) #Getting the average temperature of each day df_lettonie = df_lettonie[['DATE', "Données annuelles"]] city_name_collection = ["Paris","Athenes","Stockholm","Tallinn","Riga","Helsinki"] dataframe_collection = [df_france,df_grece,df_suede,df_lettonie,df_estonie,df_helHar] fig, ax = plt.subplots(figsize=(10,10)) scores = scoring(df_climat,dataframe_collection,city_name_collection) text_to_print = "Détail des scores ramenés sur 10000 pour la lisibilité du graphique :\n" for sc in scores: print("{}:{}".format(sc[0],sc[1])) sc.append(10000-sc[1]) plt.bar(sc[0],sc[2]) text_to_print +="Score de {} : {} ( valeur initial : {})\n".format(sc[0],round(sc[2],0),round(sc[1])) axbox = plt.axes([0.19, 0.05, 0.6, 0.15]) plt.subplots_adjust(bottom=0.3) text_box = TextBox(axbox, '', initial=text_to_print) text_box.set_active(False) plt.show()
class GuiViewer(metaclass=ABCMeta): def __init__(self, figurename): self.fig, self.ax = plt.subplots(1, figsize=(16, 16), num=figurename) self.image_id = 0 self.prev_image_id = None self.num_images = 0 self.ax.get_xaxis().set_visible(False) self.ax.get_yaxis().set_visible(False) self.fig.canvas.mpl_connect('key_press_event', self.keypress_callback) self.slider = None self.text_box = None @abstractmethod def display(self): assert self.num_images > 0, 'No image to display' if self.prev_image_id == self.image_id: return False else: self.ax.clear() print('image id: {}'.format(self.image_id)) self.prev_image_id = self.image_id return True def create_slider(self): self.axcolor = 'lightgoldenrodyellow' ax_slider = plt.axes([0.2, 0.1, 0.65, 0.03], facecolor=self.axcolor) self.slider = Slider(ax_slider, 'Id', 0, self.num_images - 1, valinit=0) self.slider.on_changed(self.slider_callback) def create_textbox(self): axbox = plt.axes([0.2, 0.05, 0.65, 0.03]) self.text_box = TextBox(axbox, '', initial=str(self.image_id)) self.text_box.on_submit(self.text_box_callback) self.deactivate_text_box() def activate_text_box(self): self.text_box.set_active(True) self.text_box.label.set_text('Type in image id: ') def deactivate_text_box(self): self.text_box.set_active(False) self.text_box.label.set_text('Press enter to find by image ID') self.text_box.set_val(str(self.image_id)) def text_box_callback(self, text): try: self.image_id = min(self.num_images - 1, int(text)) if self.slider: self.slider.set_val(self.image_id) self.display() except ValueError as e: print(e) def keypress_callback(self, event): if self.text_box and self.text_box.active: if event.key == 'enter': self.deactivate_text_box() else: pass else: if event.key == 'left': if self.image_id > 0: self.image_id -= 1 else: self.image_id = self.num_images - 1 elif self.num_images > 10 and event.key == 'up': if self.image_id > 10: self.image_id -= 10 else: self.image_id += self.num_images - 10 elif event.key == 'right': if self.image_id < self.num_images - 1: self.image_id += 1 else: self.image_id = 0 elif self.num_images > 10 and event.key == 'down': if self.image_id < self.num_images - 10: self.image_id += 10 else: self.image_id -= self.num_images - 10 elif event.key == 'enter': self.activate_text_box() return None elif event.key == 'escape': plt.close() return None else: print('Unknown Keyboard Input: {}'.format(event.key)) return None self.display() if self.slider: self.slider.set_val(self.image_id) if self.text_box: self.text_box.set_val(str(self.image_id)) def slider_callback(self, val): self.image_id = int(self.slider.val) self.slider.valtext.set_text('{}'.format(self.image_id)) if self.text_box: self.text_box.set_val(str(self.image_id)) self.display()