【Python】python作图线型颜色,从.csv文件读取多行数据作图,添加标签,图例,设置字体格式大小

线型,参考:

【python】Matplotlib作图常用marker类型、线型和颜色_python_巫_月-华为云开发者联盟 (csdn.net)

添加参数 markevery=10,可控制 marker 的间隔。

代码

import matplotlib.pyplot as plt
import pandas as pd

# 绘制PR
def plot_PR():
    pr_csv_dict = {
        # 'YOLOv5m': r'F:\ChromeDown\yolov5-6.1-pruning-autodl\yolov5-6.1-pruning-autodl\runs\val\exp\PR_curve.csv',
        # 'YOLOv7': r'G:\pycharmprojects\yolov7-distillation\runs\test\exp\PR_curve.csv',
        # 'YOLOv7-tiny': r'G:\pycharmprojects\yolov7-distillation\runs\test\exp2\PR_curve.csv',
        # 'YOLOv8s': r'G:\pycharmprojects\ultralytics-main\runs\detect\yolov8s-from-ultralytics-main-bs111\PR_curve.csv',
        'Once-Smoke': r'E:\YOLO\results\P-R\exp58-1_PR_curve-smoke.csv',
        'Once-Fire': r'E:\YOLO\results\P-R\exp58-1_PR_curve-fire.csv',
        'Once-All': r'E:\YOLO\results\P-R\exp58-1_PR_curve-all.csv',
        'Twice-Smoke': r'E:\YOLO\results\P-R\6_PR_curve-smoke.csv',
        'Twice-Fire': r'E:\YOLO\results\P-R\6_PR_curve-fire.csv',
        'Twice-All': r'E:\YOLO\results\P-R\6_PR_curve-all.csv',

    }

    line_dict = {
        'Once-Smoke': 'ro--',
        'Once-Fire': 'c<-',
        'Once-All': 'bs-',
        'Twice-Smoke': 'p-',
        'Twice-Fire': 'y>-',
        'Twice-All':'g^-'
    }

    # 绘制pr
    fig, ax = plt.subplots(1, 1, figsize=(8, 6), tight_layout=True)

    for modelname in pr_csv_dict:
        res_path = pr_csv_dict[modelname]
        x = pd.read_csv(res_path, usecols=[1]).values.ravel()
        data = pd.read_csv(res_path, usecols=[4]).values.ravel()
        ax.plot(x, data, line_dict[modelname],label=modelname, linewidth='2',markevery=60)

    # 添加x轴和y轴标签
    ax.set_xlabel('Recall',fontsize=18)
    ax.set_ylabel('Precision',fontsize=18)
    ax.set_xlim(0, 1)
    ax.set_ylim(0, 1)

    # 设置横纵坐标的刻度字体
    plt.xticks(fontsize=18)  # 设置横坐标刻度字体大小为12
    plt.yticks(fontsize=18)  # 设置纵坐标刻度字体大小为12

    plt.legend(bbox_to_anchor=(1.04, 1), loc='upper left',fontsize=14)
    plt.grid()  # 显示网格线
    # 显示图像
    fig.savefig("P-R.png", dpi=250)
    plt.show()

from numpy.random import randn

# 线形测试
def plot_line():
    data = randn(30).cumsum()
    # plt.plot(data, 'ro--', drawstyle='steps-post')
    plt.plot(data, 'ro--',markevery=10)

    plt.show()

if __name__ == '__main__':
    # 设置全局字体为 Times New Roman
    plt.rcParams['font.family'] = 'times new roman'

    plot_PR()   # 绘制PR
    # plot_line()

  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值