共计 1415 个字符,预计需要花费 4 分钟才能阅读完成。
matplotlib 生成的图像中无法显示中文字符
开发环境
- windows 8.1 64bit
- python 3.6.0
- matplotlib 3.2.1
问题背景
使用 matplotlib 绘制函数图像的时候,发现设置图像名称或图例需要汉字显示的时候只能得到 空格
生成图像中的中文错误效果
原因分析
python 中的 matplotlib 仅支持 Unicode 编码,默认是不显示中文的.
解决方案
解决方案 1
python 文件中添上一段语句
plt.rcParams['font.sans-serif']=['Simhei']
之后再次运行得出图像
解决方案 2
制定加载本地的字体文件
-
在 python 文件中导入 matplotlib 的字体控制方法
from matplotlib.font_manager import FontProperties
-
另设 font 变量存储设置好的属性
font = FontProperties(fname=r'C:\Windows\Fonts\simhei.ttf',size=14)
-
设置 title 内容时将 font 的存储对象赋给
fontproperties
属性plt.title(u'y=x 与 y=x^0.5 的函数图像比较',fontproperties = font)
修改源码后生成的图像
附件
修改前的 python 文件
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0,100) # 设置自变量的取值[0,100]
y1 = x
y2 = x**0.5
plt.figure()
plt.plot(x,y1,label='y=x')
plt.plot(x,y2,label='y=x^0.5',color='red')
plt.title('y=x 与 y=x^0.5 的函数图像比较')
plt.legend()
plt.show()
经解决方案 1 修改后的源码
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0,100) # 设置自变量的取值[0,100]
y1 = x
y2 = x**0.5
plt.figure()
plt.plot(x,y1,label='y=x')
plt.plot(x,y2,label='y=x^0.5',color='red')
plt.title('y=x 与 y=x^0.5 的函数图像比较')
plt.rcParams['font.sans-serif']=['Simhei']
plt.legend()
plt.show()
经解决方案 2 修改后的源码
import numpy as np
from matplotlib.font_manager import FontProperties
import matplotlib.pyplot as plt
x = np.linspace(0,100) # 设置自变量的取值[0,100]
y1 = x
y2 = x**0.5
plt.figure()
plt.plot(x,y1,label='y=x')
plt.plot(x,y2,label='y=x^0.5',color='red')
font = FontProperties(fname=r'C:\Windows\Fonts\simhei.ttf',size=14)
plt.title(u'y=x 与 y=x^0.5 的函数图像比较',fontproperties = font)
plt.legend()
plt.show()
正文完