『python工作』matplotlib 庫的一些注意點
阿新 • • 發佈:2019-01-30
1、在畫多幅圖時,每畫一張圖後都要使用 plt.close() 將圖關閉,否則每張圖都會累積畫到下一幅圖
2、畫多個圖表時可以使用 plt.figure(fig_i) 來建立
3、在同一個圖中畫多個子圖時,可以使用 plt.subplot(221) ,221 的意思是,建立兩行兩列共 4 個圖,並且把該圖畫在第一個圖中
4、多個數據源畫多個圖表,且每個圖表有多個子圖,可使用如下程式碼:
def data_plt(data_tuple, save_path="YDY_fig", name=""): """ 資料視覺化 :return: """ data_1, data_2, data_3, data_4 = data_tuple # 判斷資料夾是否存在,如不存在則建立 path = os.getcwd() dir_path = path + "//%s" % save_path if not os.path.exists(dir_path): os.mkdir(dir_path) fig_i = 1 for i, col in enumerate(data_1.columns): # 過濾每列中的 NAN 值 data_1_filter_nan = df_filter_nan(data_1, col) data_2_filter_nan = df_filter_nan(data_2, col) data_3_filter_nan = df_filter_nan(data_3, col) data_4_filter_nan = df_filter_nan(data_4, col) data_filter_nan_tuple = data_1_filter_nan, data_2_filter_nan, data_3_filter_nan, data_4_filter_nan step = re.findall(r"[0-9]+", col)[0] plt.figure(fig_i) # 選擇畫在圖表 fig_i sub_fig_i = 221 for data_i in data_filter_nan_tuple: NT = scs.norm.fit(data_i[col]) # `正態檢驗` plt.sca(plt.subplot(sub_fig_i)) # 畫在子圖 sub_fig_i plt.hist(data_i[col]) # 畫圖 plt.axis([0, 100, 0, len(data_i)]) plt.ylabel('Freq') plt.title(r'$ step=%s, \ \mu=%.2f ,\ \sigma=%.2f $' % (step, float(NT[0]), float(NT[1]))) plt.grid(True) sub_fig_i += 1 plt.savefig(r"%s/%s_%s.png" % (save_path, name, col)) fig_i += 1 # plt.show() # 關閉圖 plt.close() return None