Matplotlib 中文宋体 & 英文 Times New Roman 设置

Matplotlib 中文宋体 & 英文 Times New Roman 设置安装宋体查找 plt 安装目录 locate b mpl data 得到 usr local lib python2 7 dist packages matplotlib mpl data usr local lib python3 5 dist packages matplotlib mpl datampl data 文件夹下有个 fonts ttf 文件夹 将 ttf 格式的字体文件复制到此 ttf 文件夹下即可 sudomvSimSun ttf usr local lib p

安装宋体

查找plt安装目录:

locate -b '\mpl-data'

得到:

/usr/local/lib/python2.7/dist-packages/matplotlib/mpl-data /usr/local/lib/python3.5/dist-packages/matplotlib/mpl-data

mpl-data文件夹下有个/fonts/ttf文件夹,将ttf格式的字体文件复制到此ttf文件夹下即可

sudo mv SimSun.ttf /usr/local/lib/python2.7/dist-packages/matplotlib/mpl-data/fonts/ttf

SimSun.ttf下载:https://github.com/micmro/Stylify-Me/blob/master/.fonts/SimSun.ttf

接下来删除当前用户matplotlib的缓冲文件:

rm -rf ~/.cache/matplotlib/*

中文设置

参考:Matplotlib 中英文及公式字体设置

原理:

  1. 使用fontproperties局部设置字体为宋体
  2. 英文放到公式中,使用stix字体,此字体非常接近于Times New Roman
  3. 其余字体为默认字体(坐标轴刻度等)
#coding:utf-8 import os import numpy as np import matplotlib.pyplot as plt from matplotlib.font_manager import FontProperties from matplotlib import rcParams # 全局设置字体及大小,设置公式字体即可,若要修改刻度字体,可在此修改全局字体 config = { "mathtext.fontset":'stix', # "font.family":'serif', # "font.serif": ['SimSun'], # "font.size": 15, } rcParams.update(config) # 载入宋体 SimSun = FontProperties(fname='/usr/local/lib/python2.7/dist-packages/matplotlib/mpl-data/fonts/ttf/SimSun.ttf') x = np.linspace(0, 10, 1000) plt.plot(x, np.sin(x), label=u"宋体 $\mathrm{1}$") # 图例 plt.plot(x, np.cos(x), label=u"宋体 $\mathrm{2}$") # 图例 plt.title(u'宋体 $\mathrm{Times \; New \; Roman1}$', size=14, fontproperties=SimSun) # 局部设置中文为宋体,英文数字为Times New Roman plt.xlabel(u'宋体 $\mathrm{Times \; New \; Roman2}$', size=14, fontproperties=SimSun) plt.ylabel(u'宋体 $\mathrm{Times \; New \; Roman3}$', size=14, fontproperties=SimSun) plt.text(3, 0.5, u"宋体 $\mathrm{12}$", size=14, fontproperties=SimSun) # 设置标注文字中文为宋体,英文数字为Times New Roman plt.legend(prop={'family': 'SimSun', 'size': 12}) # 设置图例字体为宋体 # plt.axis('off') # 刻度仍为默认字体 plt.savefig("usestix.pdf", dpi=600, bbox_inches='tight') # 保存为pdf # plt.savefig("usestix.svg") # 若使用了公式,直接导出的svg无法使用 os.system("pdf2svg usestix.pdf usestix.svg") # 将pdf转换为svg(若仅需要设置中文字体,则不需要使用pdf2svg进行转换) plt.show()

转换为svg

plt导出的svg中不能有公式,因而先导出为pdf,然后将pdf转换为svg,有三种转换方式:

1、使用pdf2svg

  安装:sudo apt install pdf2svg

  优点:可直接在代码中转换

  缺点:文件尺寸稍大

2、使用AI

  优点:文件尺寸小

  缺点:需手动操作

3、使用inkscape

  文件尺寸最大,不建议使用

效果展示

Matplotlib 中文宋体 & 英文 Times New Roman 设置

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/230600.html原文链接:https://javaforall.net

(0)
上一篇 2026年2月13日 上午11:01
下一篇 2026年2月13日 上午11:22


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号