首页 > 编程语言 > 详细

使用 matplotlib 生成的图像中无法正常显示中文字符的解决方案 python matplotlib

时间:2020-06-10 09:50:32      阅读:72      评论:0      收藏:0      [点我收藏+]

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

制定加载本地的字体文件

  1. 在python文件中导入matplotlib的字体控制方法
from matplotlib.font_manager import FontProperties  
  1. 另设font变量存储设置好的属性
font = FontProperties(fname=r‘C:\Windows\Fonts\simhei.ttf‘,size=14)  
  1. 设置 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()

使用 matplotlib 生成的图像中无法正常显示中文字符的解决方案 python matplotlib

原文:https://www.cnblogs.com/RickyZhu/p/13083045.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!