1. 程式人生 > 其它 >Matplotlib繪製透明背景的折線圖

Matplotlib繪製透明背景的折線圖

Matplotlib是Python中最著名的繪相簿,使用matplotlib.pyplot來繪製論文實驗部分所需的折線圖。

基礎知識

所涉及到的要素有:

  1. 一個figure包含兩個子圖,用subplot實現
  2. 圖片直接生成展示或者儲存成png格式,用plt.show()或者plt.savefig()
  3. 使用plt.savefig('./IoU.png', format='png', transparent=True)儲存圖片為透明背景。
  4. 折線圖的畫法,點、線形狀、顏色,參考Matplotlib點、線形狀及顏色
  5. 圖的標題,圖的座標軸刻度,x、y軸標籤
  6. 圖的標註,用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()

結果展示

繪製出的折線圖如下所示: