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两次都用了这个方法),链接:

  1. 使用matplotlib修改字体之Times New Roman
  2. 解决Matplotlib中Times New Roman字体无法改变字体
    以上两篇文章的方法大致相同,希望可以解决字体问题。赞两位博主。

plt绘图中如何设置Helvetica字体?

这是本文重点。

plt 绘图字体设置

首先看看plt中字体输入要求:

要在图中显示相应字体,至少要设置family这一项,先选字体家族(绿色箭头所指),然后设置具体的字体,当然也可直接设置family为具体字体的名字。T字体在serif中,H字体在sans-serif中。

直接放代码:

import matplotlib.pyplot as pltplt.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改为Falseaxes.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 kwargsplt.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。坑。我吐了,想到这感觉被骗了许多年。
好了,到此结束。

python绘图之Times New Roman字体以及Helvetica字体相关推荐

  1. Python绘图时将字体改为新罗马字体的方法

    Python绘图时文字改为新罗马字体 font = {'family': 'serif', 'serif': 'Times New Roman', 'weight': 'normal', 'size' ...

  2. python 绘图-不同的中文字体汇总

    在python 绘图中,经常会出现设置标题或者x.y轴标签时,中文不显示的问题.常常需要一行代码实现以上功能,特此,总结了一些常用的中文字体,以便以后绘图方便使用: import matplotlib ...

  3. Python绘图:使用Basemap绘制全球地形图

    目的 基于NOAA-NGDC的全球地形数据ETOPO2v2,绘制全球地形图. 思路 读取全球地形数据 绘制全球地形图 数据来源 ETOPO2v2c_f4.nc下载地址:https://www.ngdc ...

  4. Python绘图总结(Matplotlib篇)

    Matplotlib绘图知识点集锦 1.1基础知识篇 绘图背景网格设置 坐标轴颜色.标题大小的设置 ax.tick_params(axis='both',labelcolor='r', labelsi ...

  5. Python绘图(一):坐标轴刻度及范围设置

    python绘图一般使用matplotlib.pandas等,本示例使用matplotlib进行简单的python绘图的坐标轴设置 1 定义坐标轴字体 plt.rc('font',family='Ti ...

  6. python设置坐标轴刻度值字体大小_python 设置xlabel,ylabel 坐标轴字体大小,字体类型...

    本文介绍了python 设置xlabel,ylabel 坐标轴字体大小,字体类型,分享给大家,具体如下: #--coding:utf-8-- import matplotlib.pyplot as p ...

  7. python绘图—— matplotlib

    python绘图-- matplotlib 1.模块导入 2.折线图绘制 2.1 设置画布大小 2.2画图 2.3 设置显示中文 2.4 设置标题 2.5 设置图例 2.6 设置坐标轴刻度和刻度标签 ...

  8. Python 绘图问题:Matplotlib中plt.rcParams[]使用方法 rcsetup.py matplotlibrc

    文章目录 from `__init__.py` from matplotlibrc from rcsetup.py from __init__.py # this is the instance us ...

  9. python绘图设置标题出现乱码_解决python2 绘图title,xlabel,ylabel出现中文乱码的问题...

    Python绘图如何显示中文标题一个懂得以幽默态度面对自己缺点并将缺点变成自己专属的特色-这才是真正乐观勇敢的人. 采用matplotlib作图时默认设置下是无法显示中文的,例如编写如下python脚 ...

  10. R绘图 vs Python绘图(散点图、折线图、直方图、条形图、箱线图、饼图、热力图、蜘蛛图)

    写在前面:为啥不用excel绘制这些图,用PoweBI,帆软BI等可视化软件来绘图,不是更方便吗?的确,这些工具都很方便,但同时,它们显得很呆,不够灵活,更为致命的是,它们绘制出的图形,分辨率不够,用 ...

最新文章

  1. 永久设置SecureCRT的背景色和文字颜色方案
  2. Zabbix监控系统部署:配置详解
  3. ASP.NET页面的CheckBoxList组件
  4. linux安装交叉编译环境
  5. 怎么修改腾讯视频账户和密码
  6. json返回的img图片被原样输出_爬取百度图片,并下载至本地
  7. Json文件转Map(二)之解析节点
  8. 单片机音频谱曲软件_单片机谱曲软件怎么弄 51单片机蜂鸣器电子琴程序
  9. 1000瓶药水,一瓶有毒,用10只老鼠来判断到底是哪一瓶
  10. 听过闰年闰月,可你听过闰秒吗?
  11. 环形10个树洞兔子c语言设计,树洞效应
  12. 程序员体验AI换脸就不要用ZAO了,详解Github周冠军项目Faceswap的变脸攻略
  13. 怎样把gis锯齿边_在arcgis中如何消除锯齿状边缘
  14. php activemq实例,php操作ActiveMQ - 小周博客,小周个人博客,程序猿小王子,技术博客,个人博客模板,php博客系统,设计模式,wzyl - 黑夜遮不住光亮...
  15. fing网络扫描仪android,Fing网络扫描仪
  16. 逐帧绘制毕达哥拉斯树
  17. 12.3 call_soon、call_at、call_later、call_soon_threadsafe
  18. C语言循环四要素是那些,基于信息化的c语言中循环语句的教学设计探讨
  19. (九)Linux算时差的方法
  20. Kaldi单音子建模

热门文章

  1. 使用 MitmProxy 玩爬虫的,这篇文章别错过了!
  2. 【Servlet入门】一篇文章让你从没听过到了熟于心
  3. maven的pom文件引入依赖报错:提示无法处理 Cannot resolve...
  4. Star Way To Heaven题解(防题目重复)
  5. 给未来的电子工程师nbsp;---电子牛人给…
  6. uniapp 发布h5后报错,连接服务器超时,点击屏幕重试
  7. 小糊涂家装预算软件 官方
  8. sys.stdout.write()用法
  9. 易语言 设置屏幕刷新率 源码_下任安卓机皇曝光,领先iPhone 12屏幕一年!
  10. Docker与本地网络连接配置