Python科研绘图——线型图
使用Python来绘制线型图,平时需要对其进行一些美化。
·
使用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参数
才疏学浅,欢迎各位读者指导纠正!
长路漫漫,借此共勉!
更多推荐
已为社区贡献1条内容
所有评论(0)