使用Python来绘制线型图,平时需要对其进行一些美化。

美化前:

美化后:

我将其封装在一个函数 f_line 中。

def f_line(ax,data,label,color):    
    # 可扩展处  可自己添加画图数据
    ax.plot(np.array(data[0]),
            marker='o', 
            markersize=None,
            markerfacecolor=None,
            markeredgecolor=None,    
            ls='--',
            label=label[0],
            linewidth=2,
            c=color[0])
    ax.plot(np.array(data[1]),
            marker='^',
            markersize=None,
            markerfacecolor=None,
            markeredgecolor=None,
            ls=None,
            label=label[1],
            linewidth=2,
            c=color[1])
    # 画框设置
    # ax.spines['right'].set_visible(False)
    # ax.spines['top'].set_visible(False)
    ax.tick_params(right=True,top=True)
    ax.spines['bottom'].set_linewidth(1.7)
    ax.spines['left'].set_linewidth(1.7)
    ax.spines['right'].set_linewidth(1.7)
    ax.spines['top'].set_linewidth(1.7)
    # 参数设置
    ax.tick_params(direction='in',labelsize=12)
    # 坐标轴标签设置
    ax.set_xlabel("X label",fontsize=12)
    ax.set_ylabel("Y label",fontsize=12)
    ax.set_ylim(30,60)
    # 设置横轴标签设置
    NUM = 4
    index = np.linspace(0,data[0].shape[0]-1,NUM,dtype=int)
    ax.set_xticks(index,['the'+str(i) for i in index])
    # 图例设置
    ax.legend(fontsize=12,edgecolor='black',loc='upper right')

调用代码。

import numpy as np
import matplotlib.pyplot as plt
plt.rc('font',family='Times New Roman')

A = np.array([43, 51, 47, 50, 44, 40, 51, 45])
B = np.array([51.870, 53.062, 46.419, 42.902, 42.290, 41.336, 41.309, 42.725])
data = [A,B]                    # 数据序列参数
label = ['Label_A','Label_B']   # 标签序列参数
color = ['black','navy']        # 颜色参数序列

fig,ax = plt.subplots()
f_line(ax,data,label,color)      # 调用函数 
plt.show()

主要是几个关键点

1、线型

    ax.plot(np.array(data[0]),    # 数据
            marker='o',           # 数据点标记样式
            markersize=None,      # 标记尺寸
            markerfacecolor=None, # 标记内部颜色
            markeredgecolor=None, # 标记边框颜色
            ls='--',              # 线型
            label=label[0],       # 标签
            linewidth=2,          # 线宽
            c=color[0]            # 颜色
            )

2、边框轴线

    ax.spines['bottom'].set_linewidth(1.7)    # 下边框加粗到1.7
    ax.spines['left'].set_linewidth(1.7)      # 左边框加粗到1.7
    ax.spines['right'].set_linewidth(1.7)     # 右边框加粗到1.7
    ax.spines['top'].set_linewidth(1.7)       # 上边框加粗到1.7
    ax.tick_params(direction='in',labelsize=12,
                   right=True,top=True)    # 指向向‘in’,刻度大小12,右边和上边刻度设置为:显示

3、坐标轴标签

    ax.set_xlabel("X label",fontsize=12)    # 给X轴设置label
    ax.set_ylabel("Y label",fontsize=12)    # 给Y轴设置label
    ax.set_ylim(30,60)                      # 设置Y值刻度范围
    NUM = 4                                 # 横轴需要显示的刻度数目
    index = np.linspace(0,data[0].shape[0]-1,NUM,dtype=int)    # 均匀产生刻度位置
    ax.set_xticks(index,['the'+str(i) for i in index])    # 根据刻度位置设置对应的标签

4、图例

    ax.legend(fontsize=12,edgecolor='black',loc='upper right')   # 图例大小、位置、及边框

说明:该函数肯定不能适用于所有的情况,但是大家基于自己的数据和需求对上述参数近一些更换即可。

以上

有任何问题欢迎邮件:2264787072@qq.com(QQ同)

Reference:

ax.tick_params()参数详解 python matplotlib.pyplot_缘*的博客-CSDN博客

Python数据可视化——matplotlib.pyplot中plt的参数详解_Fo*(Bi)的博客-CSDN博客_plt参数


才疏学浅,欢迎各位读者指导纠正!

长路漫漫,借此共勉!


Logo

汇聚原天河团队并行计算工程师、中科院计算所专家以及头部AI名企HPC专家,助力解决“卡脖子”问题

更多推荐