admin管理员组文章数量:1594972
Matplotlib绘图之Times New Roman&Helvetica
- 问题描述
- plt绘图中如何设置Times New Roman字体?
- plt绘图中如何设置Helvetica字体?
- plt 绘图字体设置
- plt 绘图Helvetica字体设置
- 字体文件路径
- 字体下载
- 删除 matplotlib 的缓冲目录
- 修改文件 matplotlibrc,增加配置
- 重启
- Validation
问题描述
论文插图字体一般要求Times New Roman或者Helvetica字体,前者不必说,字体也还不错,应用也比较广泛,但有个问题是中文显示是方框,后者是MATLAB默认字体,起初接触的时候还没觉得如何,后来随着对各种字体的摸索,当然也是期刊要求,发现她(Helvetica)真好看!pycharm中使用python包matplotlib进行科研绘图,这两款字体中俺心心念念的Helvetica字体却无法被用到,虽然与其长相相似的Arial字体可以用,但强迫症的我决定抽出时间解决这个问题。因为我从未见过真正的Helvetica长啥样,请听我细细道来。
plt绘图中如何设置Times New Roman字体?
虽然说更喜欢Helvetica(下文以H代之),但是Times New Roman (T) 也不错,而且最先接触的正式西文字体是T,但是,不知道咋回事,python绘图中Times New Roman 字体无法设置粗细,这不致命,致命的是它始终显示粗体。这咋整?(正经地说,“这应当如何解决呢?”)搜寻了大量方法,真的是大量,然后在组内同学帮助下找到了以下博客文章,解决了该问题,用上了可变化粗细的T字体,至少一字在手科研绘图不愁。此处不赘述,亲测2次(python 3.7和3.8两次都用了这个方法),链接:
- 使用matplotlib修改字体之Times New Roman
- 解决Matplotlib中Times New Roman字体无法改变字体
以上两篇文章的方法大致相同,希望可以解决字体问题。赞两位博主。
plt绘图中如何设置Helvetica字体?
这是本文重点。
plt 绘图字体设置
首先看看plt中字体输入要求:
要在图中显示相应字体,至少要设置family这一项,先选字体家族(绿色箭头所指),然后设置具体的字体,当然也可直接设置family为具体字体的名字。T字体在serif中,H字体在sans-serif中。
直接放代码:
import matplotlib.pyplot as plt
plt.rcParams['axes.linewidth'] = 1 # 图框宽度
plt.rcParams['figure.dpi'] = 300 # plt.show显示分辨率
font = {'family': 'serif',
'serif': 'Times New Roman',
'weight': 'normal',
'size': 10}
plt.rc('font', **font)
plt.figure()
x = [1, 2, 3]
y = [k ** 2 for k in x]
plt.plot(x, y)
plt.title('This is Times New Roman Font', fontweight='normal')
plt.savefig(r"C:\Users\Asus\Desktop\times1.jpg", dpi=600, bbox_inches='tight', pad_inches=0.01)
plt.show()
如果这时候要用以下这种设置:
font = {'family': 'sans-serif',
'sans-serif': 'Helvetica',
'weight': 'normal',
'size': 10}
恭喜你,你将会看到如下错误:
UserWarning: findfont: Font family [‘sans-serif‘] not found. Falling back to DejaVu Sans.
然后就使用默认字体来绘图了。
plt 绘图Helvetica字体设置
解决方法来自于该博客:
Python数据可视化第 2 讲:matplotlib 绘图中文字体设置
以及 Font family [‘sans-serif’] not found. Falling back to DejaVu Sans. Solution
==================方法描述:
字体文件路径
import matplotlib
print(matplotlib.matplotlib_fname())
F:\python38\lib\site-packages\matplotlib\mpl-data\matplotlibrc
找到F:\python38\lib\site-packages\matplotlib\mpl-data
路径即可,然后下载字体Helvetica。
字体下载
有钱人下正版,没钱人下。。。不下正版就是了,分享一个链接:Helvetica字体 免费版 下载之家 ; 正版链接:Helvetica 害,几十美刀吧也就。嗯。
以第一种方法为例,解压如下(解压密码在下载之家网站上有说明):
把该.tff
文件复制到这个路径下:F:\python38\Lib\site-packages\matplotlib\mpl-data\fonts\ttf
.
当然你可以进一步把它存到电脑的系统字体里:控制面板\外观和个性化\字体
,然后可以在adobe等画图软件里也使用它。
删除 matplotlib 的缓冲目录
import matplotlib
print(matplotlib.get_cachedir())
C:\Users\Asus.matplotlib
Windows中手动删除该路径文件就行。
修改文件 matplotlibrc,增加配置
该文件仍在字体路径下:
用txt、notepad++、python都可以打开编辑。别问我为啥知道,因为都试过。大概在228-259行。
# 1.去掉下面一行的 # 号
font.family : sans-serif
# 2.去掉下面一行前面的 # 号,并在冒号后面添加 Hevetica,如果有就不需要加了
font.sans-serif : SimHei, Bitstream Vera Sans, Lucida Grande, Verdana, Geneva, Lucid, Arial, Helvetica, Avant Garde, sans-serif
# 3.去掉下面一行前面的 # 号,并将True改为False
axes.unicode_minus : False
重启
关了python,重启。
Validation
到了熟悉的实验验证环节,证明方法的有效性(effectiveness)。
plt.rcParams['axes.linewidth'] = 1 # 图框宽度
plt.rcParams['figure.dpi'] = 300 # 图框宽度
font = {'family': 'sans-serif',
'sans-serif': 'Helvetica',
'weight': 'normal',
'size': 10}
plt.rc('font', **font) # pass in the font dict as kwargs
plt.figure()
x = [1, 2, 3]
y = [k ** 2 for k in x]
plt.plot(x, y)
plt.title('This is Helvetica Font', fontweight='normal')
plt.savefig(r"C:\Users\Asus\Desktop\helvetica1.jpg", dpi=600, bbox_inches='tight', pad_inches=0.01)
plt.show()
与MATLAB对比一下:
当然,前面说过,Windows上面会把Helvetica字体给你弄成Arial字体,所以你见到的H都是Arial,包括MATLAB和WORD里面的字体,我一开始想把字体文件直接移植过来… 后来发现word的字体文件里面根本没有H字体,那他咋实现Helvetica字体的?问就是Arial。坑。我吐了,想到这感觉被骗了许多年。
好了,到此结束。
本文标签: 字体timesPythonHelveticaRoman
版权声明:本文标题:python绘图之Times New Roman字体以及Helvetica字体 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dongtai/1728203514a1149684.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论