示例#1
0
 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
示例#2
0
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()
示例#3
0
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()