Отображать фиксированные значения оси x и y с введенными пользователем значениями x и y в Matplotlib? - PullRequest
0 голосов
/ 11 июля 2020

рисунок того, что я могу получить matplotlib для отображения по сравнению с желаемым отображением Я хочу взять выбранное пользователем значение из счетчика для оси x, например. 3 и второе вычисленное значение, например. 24 для значения y и построить их друг против друга, но я также хочу иметь фиксированные целые числа для других значений оси x. Это будет отображать рассчитанную пользователем сумму, например. 24 против дня недели, выбранного пользователем. Возможно ли это?

В этом примере, если пользователь выбирает день 3, а рассчитанная сумма для оси y равна 24 и, если для значений y дней 1-2 и 4-7 ничего не сохранено , он будет строить x = 1, y = 0; х = 2, у = 0; х = 3, у = 24, х = 4, у = 0; х = 5, у = 0; х = 6, у = 0; х = 7, у = 0. Диапазон оси Y не очень важен, но должен быть разумным диапазоном, возможно, начиная с нуля.

Я могу отобразить, например. x = 3 и y = 24, но я не вижу, как заставить его отображать другие значения оси x 1-2 и 4-7. Есть ли способ сделать это, поскольку я не вижу примера в Интернете? Будем очень признательны за любые указатели!

class GraphGridLayout(GridLayout):
    def build(self):
        return GraphGridLayout()

class AlcGridLayout(GridLayout):


    # for y value
    def calculate(self, calculation):
        if calculation:
            try:
                self.display.text = str(eval(calculation))

                print(self.display.text)
             
                alcday = [1, 2, 3, 4, 5, 6, 7]

                alcunits = [None, None, None, None, None, None, None]

                x = [self.ids.spinner_day.text]
                y = [self.display.text]

                if x == "1":
                    alcday[0] = 1
                    alcunits[0] += self.display.text
                elif x == "2":
                    alcday[1] = 2
                    alcunits[1] += self.display.text
                elif x == "3":
                    alcday[2] = 3
                    alcunits[2] += self.display.text
                elif x == "4":
                    alcday[3] = 4
                    alcunits[3] += self.display.text
                elif x == "5":
                    alcday[4] = 5
                    alcunits[4] += self.display.text
                elif x == "6":
                    alcday[5] = 6
                    alcunits[5] += self.display.text
                elif x == "7":
                    alcday[6] = 7
                    alcunits[6] += self.display.text


                width_in_inches = 2
                height_in_inches = 2
                dots_per_inch = 70

                plt.figure(
                    figsize=(width_in_inches, height_in_inches),
                    dpi=dots_per_inch)


                plt.plot(x, y)
                plt.ylim([0, self.display.text])


                plt.scatter(x[0], y[0], c='b', marker='o')
                plt.tight_layout(1)

                box = BoxLayout()

                self.ids.totalunits.add_widget(FigureCanvasKivyAgg(plt.gcf()))

                return box


            except Exception:
                self.display.text = "Something went wrong!"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...