打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
(python3)matplotlib设置中英文多种字体混合坐标轴名称

在利用matplotlib绘图时,常常需要添加图例与坐标轴名称,而在论文中,对中英文有严格的不同的字体要求,但默认的方法中(如下所示),无法分别为中文、英文指定不同字体(如下图),因此需要借助其他方法。

# -*- coding: utf-8 -*-import matplotlib.pyplot as pltfrom matplotlib.font_manager import FontProperties# 在python中,字体单位貌似是px,与pt间的换算关系为1pt=4/3pxsimsun = FontProperities(fname=r'C:\Windows\Fonts\simsun.ttc', size=10) plt.xlabel(u'Di距离', fontproperties=simsun)

////////////////////////
经过摸索后发现text函数能够在指定位置按照指定字体与大小显示文字,因此可以通过调整文字位置来实现xlabel的功能并且能够按照指定字体分别显示中英文(如下图)。代码如下:

# -*- coding: utf-8 -*-import matplotlib.pyplot as pltfrom pylab import mpl, textfrom matplotlib.font_manager import FontPropertiesimport numpy as np # windows下matplotlib显示中文一般有问题,需要专门进行设置才能正常显示# 下面是两种设置的方式,使用时的参数也略有区别,在此不具体介绍# 但需提前设置好,使得能够显示中文,否则中文字符位置显示为方框simsun = FontProperties(fname=r'C:\Windows\Fonts\simsun.ttc', size=10) # 宋体roman = FontProperties(fname=r'C:\Windows\Fonts\times.ttf', size=10) # Times new romanmpl.rcParams['font.sans-serif'] = ['SimSun']fontcn = {'family': 'SimSun','size': 10} # 1pt = 4/3pxfonten = {'family':'Times New Roman','size': 10}plt.figure(1)ax1 = plt.subplot(121)  # 左图ax2 = plt.subplot(122)  # 右图plt.sca(ax1)plt.xlim(0,150)plt.ylim(0,0.08)plt.xticks(range(0,160,10),rotation=0)# 设置斜体-Times New Roman字体text(60, -0.01, u'Di', style='italic', fontdict=fonten) text(70, -0.01, u'距离', fontdict=fontcn)text(85, -0.01, u'(km)', fontdict=fonten)plt.ylabel(u"核密度", fontproperties=simsun)plt.title(u"a.核密度")plt.sca(ax2)plt.xlim(0,150)plt.ylim(0,1)plt.xticks(range(0,160,10),rotation=0)plt.yticks(np.linspace(0,1,11))text(60, -0.13, u'Di', style='italic', fontdict=fonten)text(70, -0.13, u'距离', fontdict=fontcn)text(85, -0.13, u'(km)', fontdict=fonten)plt.ylabel(u"累积概率", fontproperties=simsun)plt.title(u"b.累积概率")plt.show()


上述代码可直接运行,字体设置无误即可得到上图中的结果,但Di距离(km)可能会重叠或者空隙较大,这是正常情况,需要调整文字位置。text函数的前两个参数为其位置参数,都与其x轴、y轴坐标刻度有关,以<text(70, -0.01, u’距离’, fontdict=fontcn)为例,70说明其水平方向位置在坐标轴70处,-0.01说明其垂直方向位置在-0.01刻度处,按照这个规则即可以多种字体显示多段文字。


本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
python如何设置中文界面
Python数据可视化之matplotlib
python中matplotlib画折线图实例(坐标轴数字、字符串混搭及标题中文显示)
Python之Matplotlib库常用函数大全(含注释)
相信我,这篇文章一定能让你的matplotlib完美显示中文!
基础篇-字体、线类型、标记绘制方法大汇总~~
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服