Python:使用matplotlib绘图遇到的多种问题及相应解决方法

本文详细介绍了使用Matplotlib进行图像制作时,包括全局字体配置、图像比例调整、缩放图绘制、公式与特殊字符显示、图例设置、清晰度优化以及线条标记控制等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


一、全局设置图像字体

在代码开头加入如下代码段:

config = {
    "font.family":'serif', # 衬线字体
    "font.size": 16, #12相当于小四大小
    "mathtext.fontset":'stix', # 数学公式字体,显示效果接近Times new roman
    "font.serif": ['SimSun'], # 中文字体设置为SimSun,相当于宋体
}
rcParams.update(config)

二、设置图像比例

ax.set_aspect(0.8) #设置高宽比

三、绘制缩放图

axins = ax.inset_axes((0.48, 0.08, 0.45, 0.45))#(x0, y0, width, height),确定子图位置

axins.tick_params(labelsize=11)
labels1 = axins.get_xticklabels() + axins.get_yticklabels()
[label.set_fontname('Times New Roman') for label in labels1]

#在缩放图中也绘制主图所有内容,然后根据限制横纵坐标来达成局部显示的目的
axins.plot(FPR1, TPR1, linestyle='-', marker='o', color='red', markersize=5, linewidth=1,markevery=10)
axins.grid(linestyle='--') #设置子图中显示网格

#调整子坐标系的显示范围
axins.set_xlim(0.0, 0.03)
axins.set_ylim(0.65, 1.0)

# 设置子坐标系的显示间隔
x_major_locator1 = MultipleLocator(0.006)# 刻度间隔设置为0.5*pi
axins.xaxis.set_major_locator(x_major_locator1)
y_major_locator1 = MultipleLocator(0.1)
axins.yaxis.set_major_locator(y_major_locator1)

plt.grid(linestyle='--')

缩放图效果如下(文章接下来的几个代码显示效果都可以参考该图):
在这里插入图片描述


四、图像中需要显示公式或者特殊字符

plt.xlabel(r'$\xi_\mathrm{{FRR}}$')
plt.ylabel(r'$1-\xi_{\mathrm{FAR}}$')

#代码解读:$$中写入公式,具体语法格式与latex相似

五、图例legend相关设置

plt.legend(["RVFNet","Temporal-only","Spatial-only"], ncol=1,
           prop={"family": "Times New Roman", "size": 11},bbox_to_anchor=(1,0.97))

# 如果图例中同时包含中英文的设置方式
plt.legend(["本方案","$\mathrm{SFIM}$","$\mathrm{LFP}$","$\mathrm{DML}$","$\mathrm{CCR}$"], ncol=1,
           prop={"family": "SimSun", "size": 11},bbox_to_anchor=(1,0.94))

ncol为图例的列的数量,prop中可以设置legend的字体及字号,bbox_to_anchor用于设置图例的位置。
注意:如果图例中同时包含中英文,将英文部分的内容填入$\mathrm{*}$*中,在prop中设置整体字体为"SimSun"或者"STSONG"都可以。这两个都是宋体,个人选择了前者,感觉前者线条略粗,好看一点。


六、调整图像清晰度及去除白边

plt.savefig(r'ablation_branch.pdf',bbox_inches='tight', pad_inches=0.0, dpi=900)

dpi设置图片分辨率,值越大越清晰;bbox_inches = ‘tight’ 可以去除坐标轴占用的空间;pad_inches = 0 这句是重点,用于去除所有白边。


七、调整线条标记大小及显示间隔

plt.plot(FPR1, TPR1, linestyle='-', marker='o', color='red', linewidth=1, markersize=5,markevery=30)

linewidth设置线条粗细;markersize 设置标记大小;markevery 设置标记的显示间隔。


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值