0
我想用PyPlot在單個窗口中顯示多個圖形。我可以這樣做沒有問題,下面的代碼:可以在matplotlib/pyplot中創建一個圖形但不是另一個
def create_figure_one(self):
plt.figure(1)
plt.subplot(311)
plt.plot_date(self.dates, self.PREC, '-', color='b')
plt.title('Precipitation', fontsize=20)
plt.ylabel('MM/DT', fontsize=15)
plt.tick_params(axis='both', which='major', labelsize=10)
plt.tick_params(axis='both', which='minor', labelsize=10)
plt.grid()
plt.subplot(312)
plt.plot_date(self.dates, self.PET, '-', color='b')
plt.plot_date(self.dates, self.AET, '-', color='r')
plt.title('Evapotranspiration', fontsize=20)
plt.ylabel('MM/DT', fontsize=15)
plt.tick_params(axis='both', which='major', labelsize=10)
plt.tick_params(axis='both', which='minor', labelsize=10)
red_patch = mpatches.Patch(color='blue', label='Potential')
blue_patch = mpatches.Patch(color='red', label='Actual')
plt.legend(handles=[red_patch, blue_patch])
plt.grid()
plt.subplot(313)
plt.plot_date(self.dates, self.Q, '-', color='b')
plt.title('Flow', fontsize=20)
plt.ylabel('CMS', fontsize=15)
plt.xlabel('Time', fontsize=15)
plt.tick_params(axis='both', which='major', labelsize=10)
plt.tick_params(axis='both', which='minor', labelsize=10)
plt.grid()
plt.show()
這個功能被調用後,點擊我的GUI中的按鈕。同樣,我在我的GUI另一個按鈕調用另一個功能:
def create_figure_two(self):
plt.figure(1)
#UZTWC
plt.subplot(611)
plt.plot_date(self.dates, self.UZTWC, '-', color='b')
self.title('UZTWC', fontsize=15)
plt.ylabel('MM', fontsize=10)
plt.tick_params(axis='both', which='major', labelsize=10)
plt.tick_params(axis='both', which='minor', labelsize=10)
plt.grid()
#UZFWC
plt.subplot(612)
plt.plot_date(self.dates, self.UZFWC, '-', color='b')
self.title('UZFWC', fontsize=15)
plt.ylabel('MM', fontsize=10)
plt.tick_params(axis='both', which='major', labelsize=10)
plt.tick_params(axis='both', which='minor', labelsize=10)
plt.grid()
#LZTWC
plt.subplot(613)
plt.plot_date(self.dates, self.LZTWC, '-', color='b')
self.title('LZTWC', fontsize=15)
plt.ylabel('MM', fontsize=10)
plt.tick_params(axis='both', which='major', labelsize=10)
plt.tick_params(axis='both', which='minor', labelsize=10)
plt.grid()
#LZFPC
plt.subplot(614)
plt.plot_date(self.dates, self.LZFPC, '-', color='b')
self.title('LZFPC', fontsize=15)
plt.ylabel('MM', fontsize=10)
plt.tick_params(axis='both', which='major', labelsize=10)
plt.tick_params(axis='both', which='minor', labelsize=10)
plt.grid()
#LZFSC
plt.subplot(615)
plt.plot_date(self.dates, self.LZFSC, '-', color='b')
self.title('LZFSC', fontsize=15)
plt.ylabel('MM', fontsize=10)
plt.tick_params(axis='both', which='major', labelsize=10)
plt.tick_params(axis='both', which='minor', labelsize=10)
plt.grid()
#ADIMC
plt.subplot(616)
plt.plot_date(self.dates, self.ADIMC, '-', color='b')
self.title('ADIMC', fontsize=15)
plt.ylabel('MM', fontsize=10)
plt.tick_params(axis='both', which='major', labelsize=10)
plt.tick_params(axis='both', which='minor', labelsize=10)
plt.xlabel('Time', fontsize=10)
plt.grid()
plt.show()
但沒有任何反應。我的終端沒有出現任何錯誤,我的程序沒有終止,並且沒有窗口顯示我的圖表。我看不出我的兩個功能之間有什麼區別可能解釋爲什麼第一個工作正常,第二個不是。
self.dates:
self.list_of_datetimes = []
skipped_header = False;
with open(data_file, 'rt') as f:
reader = csv.reader(f, delimiter=',', quoting=csv.QUOTE_NONE)
for row in reader:
if skipped_header:
date_string = "%s/%s/%s %s" % (row[0].strip(), row[1].strip(), row[2].strip(), row[3].strip())
dt = datetime.strptime(date_string, "%Y/%m/%d %H")
self.list_of_datetimes.append(dt)
skipped_header = True
self.dates = matplotlib.dates.date2num(self.list_of_datetimes)
如果任何人有這將不勝感激任何見解。