Я строю несколько гистограмм с помощью кнопок (предыдущая, следующая). При нажатии на следующую, следующая гистограмма не появляется. Однако отображаются оси и заголовок.
Я пытался использовать plt.hist()
вместо ax.hist()
, но при нажатии кнопки «Далее» кнопки исчезали.
Затем, чтобы кнопки появились, я попытался включить коды кнопок внутри операторов if: else. Хотя кнопки и появились, я не мог заставить их работать из операторов.
df = pd.read_excel('Book2.xlsm')
plt.ion()
fig, ax = plt.subplots()
fig.subplots_adjust(bottom=0.2)
axes = plt.gca()
axes.set_xlim(0, 100)
axes.set_ylim(0, 100)
axes.xaxis.set_major_locator(mticker.MaxNLocator(integer=True))
axes.xaxis.set_minor_locator(mticker.MultipleLocator(base=1.0))
ax.set_title("17 - Alpha OH PROGESTERONE - HORMONE ASSAYS" )
ax.hist(df.loc[0:1,'age':'age'].to_numpy(),4, rwidth=0.9)
class Index:
data = df
data_min = 0
data_max = data.shape[1]-1
selected = 0
def next(self, event):
global ax
global fig
if self.selected >=self.data_max:
self.selected = self.data_max
ax.set_title('Last sample reached. Cannot go forwards')
else:
self.selected += 1
if self.selected == 1:
plt.clf()
fig.subplots_adjust(bottom=0.2)
axes = plt.gca()
axes.set_xlim(0, 100)
axes.set_ylim(0, 100)
axes.xaxis.set_major_locator(mticker.MaxNLocator(integer=True))
axes.xaxis.set_minor_locator(mticker.MultipleLocator(base=1.0))
ax.set_title("17 ALPHA HYDROXY PROGESTERONE")
ax.hist(df.loc[2:6,'age':'age'].to_numpy(),4, rwidth=0.9)
elif self.selected == 2:
plt.clf()
fig.subplots_adjust(bottom=0.2)
axes = plt.gca()
axes.set_xlim(0, 100)
axes.set_ylim(0, 100)
axes.xaxis.set_major_locator(mticker.MaxNLocator(integer=True))
axes.xaxis.set_minor_locator(mticker.MultipleLocator(base=1.0))
ax.set_title("24 hrs URINE FOR CREATININE")
ax.hist(df.loc[7:17,'age':'age'].to_numpy(),4, rwidth=0.9)
def prev(self, event):
global ax
global fig
if self.selected >=self.data_max:
self.selected = self.data_max
ax.set_title('Last sample reached. Cannot go forwards')
else:
self.selected += 1
if self.selected == 1:
plt.clf()
fig.subplots_adjust(bottom=0.2)
axes = plt.gca()
axes.set_xlim(0, 100)
axes.set_ylim(0, 100)
axes.xaxis.set_major_locator(mticker.MaxNLocator(integer=True))
axes.xaxis.set_minor_locator(mticker.MultipleLocator(base=1.0))
ax.set_title("17 ALPHA HYDROXY PROGESTERONE")
ax.hist(df.loc[2:6,'age':'age'].to_numpy(),4, rwidth=0.9)
elif self.selected == 2:
plt.clf()
fig.subplots_adjust(bottom=0.2)
axes = plt.gca()
axes.set_xlim(0, 100)
axes.set_ylim(0, 100)
axes.xaxis.set_major_locator(mticker.MaxNLocator(integer=True))
axes.xaxis.set_minor_locator(mticker.MultipleLocator(base=1.0))
ax.set_title("24 hrs URINE FOR CREATININE")
ax.hist(df.loc[7:17,'age':'age'].to_numpy(),4, rwidth=0.9)
callback = Index()
axprev = plt.axes([0.7, 0.05, 0.1, 0.075])
axnext = plt.axes([0.81, 0.05, 0.1, 0.075])
bnext = Button(axnext, '>')
bprev = Button(axprev, '<')
bnext.on_clicked(callback.next)
bprev.on_clicked(callback.prev)
plt.show()
Я ожидаю, что графики будут хорошей каруселью. Тем не менее, все еще ждет.