рисунок того, что я могу получить 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!"