Advertisement

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

阅读量:

安装宋体

查找plt安装目录:

复制代码
    locate -b '\mpl-data'
    
    bash

得到:

/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
    
    bash

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

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

复制代码
    rm -rf ~/.cache/matplotlib/*
    
    bash

中文设置

参考: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()
    
    
    
    
    python
    
    
![](https://ad.itadn.com/c/weblog/blog-img/images/2025-08-16/eQ2pfxizHJ6wjsyrTRN79GYl80bV.png)

转换为svg

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

1、使用pdf2svg

安装:sudo apt install pdf2svg

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

缺点:文件尺寸稍大

2、使用AI

优点:文件尺寸小

缺点:需手动操作

3、使用inkscape

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

效果展示

全部评论 (0)

还没有任何评论哟~