python用matplotlib作图时,中文标注显示乱码为小方框
程序员文章站
2024-01-19 20:06:46
...
使用matplotlib做图时,无法正确显示中文,乱码为小方框,主要是因为默认时,找不到字体.
/bin/env python
# -*- coding:utf-8 -*-
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
x = np.arange(100, 600, 100)
train_1 = [11.8193, 28.0856, 36.3845, 62.8033, 95.7671]
train_2 = [70.8071, 242.193, 299.432, 377.331, 390.672]
plt.plot(x, train_pre_5, c='blue', marker='o', ms=4, label='精度<=10*e-5')
plt.plot(x, train_pre_6, c='red', marker='s', ms=4, label='精度<=10*e-6')
#plt.xticks(x)
plt.xlim(50, 550)
plt.ylim(-10, 410)
plt.xlabel('样本',fontproperties=font)
plt.ylabel('用时/s', fontproperties=font)
plt.savefig("./1.png")
plt.show()
运行上述代码,中文为小方框.
解决方法:
一:全局设置
import matplotlib as mpl
#配置之后便可使用
mpl.rcParams['font.family']='SimHei'
mpl.rcParams['font.sans-serif']=['SimHei']
mpl.rcParams['axes.unicode_minus']=False
二:局部设置
from matplotlib.font_manager import FontProperties
font = FontProperties(fname=r"/usr/share/fonts/SIMLI.TTF")
plt.xlabel('样本',fontproperties=font)
plt.ylabel('用时/s', fontproperties=font)
由于图例plt.legend()要展示中文,此时得换用方法plt.legend(prop=my_font)
plt.legend(prop=font, loc="upper left")
其中,loc指定图例位置.
注:
ubuntu中部分中文字体缺失,所以可以从windows系统在中拷贝相关字体,但"c:\windows\fonts"下的字体,ttf文件为软连接,拷贝后无效,TTF文件可以使用.(暂没有找到好的解决办法)
参考:
1.
https://blog.csdn.net/yanpenggong/article/details/82730285
2.
https://blog.csdn.net/qq_44912982/article/details/107131711
上一篇: 设计模式之简单工厂