如何将matplotlib中全局的中文设置成宋体

配置介绍:python 3.5 ;操作系统,windows 8.1 ;

步骤:

1、由于matplotlib默认不支持ttc,所以可以将ttc转换ttf先。将Windows字体 simsun.ttc上传到 https://transfonter.org/ttc-unpack 在线转换成TTF,
2、得到simsun.ttf和nsimsun.ttf,将两个ttf文件放到PYTHON安装目录的 Lib\site-packages\matplotlib\mpl-data\fonts\ttf 子目录下。

例如:我的电脑上,如下:C:\Users\vinsuan\AppData\Local\Programs\Python\Python35\Lib\site-packages\matplotlib\mpl-data\fonts\ttf
3、删除字体缓存以便重新生成字体缓存:清空$HOME/.matplotlib/文件夹下的所有文件及文件夹,如果不放心,请先备份!!!

例如:我的电脑上,如下:C:\Users\vinsuan\.matplotlib

 

代码示例:

 

#coding:utf-8
import matplotlib.pyplot as plt
import numpy as np
import matplotlib as mpl
mpl.rcParams['font.family'] = 'sans-serif'
mpl.rcParams['font.sans-serif'] = 'NSimSun'

x, y = np.loadtxt('data.txt', delimiter=',', unpack=True)
plt.plot(x,y, '+',label='PoW算法',color='black')

plt.xlabel('难度值')
plt.ylabel('时间')
plt.title('PoW共识的hash难题解决时间表')
plt.legend()
plt.show()


结果:

 

补充:将全局设置成宋体,数字和英文也会变成宋体,如上图所示;

如何解决中文问宋体,其他为新罗马体?只能局部设置中文字体。

#coding:utf-8  
import matplotlib as mpl
from matplotlib.font_manager import *  
import matplotlib.pyplot as plt  
mpl.rcParams.update({
    'font.family': 'sans-serif',
    'font.sans-serif': ['Times New Roman'],
    })  # 设置全局字体
#定义自定义字体,文件名从1.b查看系统中文字体中来  
myfont = FontProperties(fname='~/anaconda3/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/ttf/simhei.ttf')  
#解决负号'-'显示为方块的问题  
matplotlib.rcParams['axes.unicode_minus']=False  
plt.plot([-1,2,-5,3])  
plt.title(u'这是标题',fontproperties=myfont)  
plt.show()

其实,这么折腾,还不如用Excel画图或者MATLAB也行!!!

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页