【TimesSong.ttf】将matplotlib更改字体为 宋体/TimesNewRoman 并保存svg

作品简介

目前,由于微软的更新,在win11和win10的部分电脑上存在问题,此问题在2023年2月22日版本更新中已经解决。

matplotlib原生不支持中文,为了在论文中愉快的使用matplotlib,可以采用如下方法(windows 和 ubuntu都可以使用):

  1. 下载我提供的字体文件 TimesSong.ttf。这个字体文件中文部分为宋体字符,英文部分为 Times New Roman
  2. 将 TimesSong.ttf 放在任意位置,并复制路径
  3. 在绘图之前,运行如下代码,注意将【C:\\Users\\Harry\\.matplotlib\\TimesSong.ttf 】换成你自己的文件路径
import os
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties
from matplotlib import font_manager
from matplotlib import rcParams
# If use jupyter
%matplotlib inline



# 载入宋体,注意修改文件目录
TimesSong = FontProperties(fname='C:\\Users\\Harry\\.matplotlib\\TimesSong.ttf')
font_manager.fontManager.addfont('C:\\Users\\Harry\\.matplotlib\\TimesSong.ttf')


# 全局设置字体及大小,设置公式字体即可
config = {
    "mathtext.fontset":'stix',
    "font.family":'serif',
    "font.serif": ['TimesSong'],
    'axes.unicode_minus': False, # 处理负号,即-号
    "font.size": 12
}

rcParams.update(config)

 

测试代码:

import numpy as np
x = np.linspace(0, 10, 1000)
# 作图
plt.figure(dpi = 200)
plt.plot(x, np.sin(x), label=u"宋 - 1")
plt.plot(x, np.cos(x), label=u"宋 - 2")
# 测试
plt.legend()
plt.title(u'宋体 title')		  # 中英文测试
plt.xlabel(u'宋体 xlabel')
plt.ylabel('$y_{label}$')	  # 公式测试
plt.text(3, 0.5, u"test")


# 保存
# 付费获取保存svg的方法
savefig("usestix")

效果展示:

【注】:大家需要拥有 宋体 和 Times New Roman 字体的授权


创作时间: