Matplotlib繪製透明背景的折線圖
阿新 • • 發佈:2022-12-04
Matplotlib是Python中最著名的繪相簿,使用
matplotlib.pyplot
來繪製論文實驗部分所需的折線圖。
基礎知識
所涉及到的要素有:
- 一個figure包含兩個子圖,用subplot實現
- 圖片直接生成展示或者儲存成png格式,用plt.show()或者plt.savefig()
- 使用plt.savefig('./IoU.png', format='png', transparent=True)儲存圖片為透明背景。
- 折線圖的畫法,點、線形狀、顏色,參考Matplotlib點、線形狀及顏色
- 圖的標題,圖的座標軸刻度,x、y軸標籤
- 圖的標註,用plt.legend()
程式碼實現
具體程式碼如下:
# -*- coding: utf-8 -*- """ PROJECT_NAME: PLOT FILE_NAME: article AUTHOR: welt E_MAIL: [email protected] DATE: 2022/11/29 """ import numpy as np import matplotlib.pyplot as plt import pandas as pd plt.rcParams['font.sans-serif'] = ['SimHei'] plt.rcParams['axes.unicode_minus'] = False # 顯示負號 data = pd.read_csv(r'Kappa.csv') x = np.array(data['Step']) Res_UNet = np.array(data['Res-UNet']) U_Net = np.array(data['U-Net']) DeeplabV3 = np.array(data['DeeplabV3']) # label在圖示(legend)中顯示。若為數學公式,則最好在字串前後新增"$"符號 # color:b:blue、g:green、r:red、c:cyan、m:magenta、y:yellow、k:black、w:white、、、 # 線型:- -- -. : , # marker:. , o v < * + 1 plt.figure(figsize=(6, 3)) plt.grid(linestyle="--") # 設定背景網格線為虛線 ax = plt.gca() ax.spines['top'].set_visible(False) # 去掉上邊框 ax.spines['right'].set_visible(False) # 去掉右邊框 plt.plot(x, Res_UNet, marker='.', color="#5684A6", label="Res-UNet", linewidth=1) plt.plot(x, U_Net, marker='.', color="#799762", label="U-Net", linewidth=1) plt.plot(x, DeeplabV3, marker='.', color="#CD332D", label="DeeplabV3", linewidth=1) group_labels = ['0', '200', '400', '600', '800', '900'] # x軸刻度的標識 plt.xticks(x, fontsize=12, fontweight='bold') # 預設字型大小為10 ax.set_xticks([0, 100, 200, 300, 400, 500, 600, 700, 800, 900, 1000]) ax.set_xticklabels([0, 100, 200, 300, 400, 500, 600, 700, 800, 900, 1000]) plt.yticks(fontsize=12, fontweight='bold') plt.title("不同模型梯田的IoU對比", fontsize=12, fontweight='bold') # 預設字型大小為12 plt.xlabel("Step(Batch)", fontsize=13, fontweight='bold') plt.ylabel("IoU", fontsize=13, fontweight='bold') plt.xlim(0, 900) # 設定x軸的範圍 plt.ylim(0.2, 1) plt.legend() # 顯示各曲線的圖例 plt.legend(loc=0, numpoints=1) leg = plt.gca().get_legend() ltext = leg.get_texts() plt.setp(ltext, fontsize=12, fontweight='bold') # 設定圖例字型的大小和粗細 plt.tight_layout() plt.savefig('./IoU.png', format='png', transparent=True) plt.show()
結果展示
繪製出的折線圖如下所示: