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: tjlwelt@foxmail.com
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()

结果展示

绘制出的折线图如下所示:

IoU

posted @ 2022-12-04 15:44  Weltㅤ  阅读(1481)  评论(0编辑  收藏  举报