用python绘制函数图像显示中文_使用 matplotlib 生成的图像中无法正常显示中文字符的解决方案 python matplotlib...

当使用matplotlib在Python中绘制函数图像并尝试显示中文时,会遇到显示为空白的问题。原因是matplotlib默认不支持中文。本文提供了两种解决方案:1) 设置`font.sans-serif`参数;2) 指定本地字体文件。通过这些方法,可以成功在图像中显示中文。
摘要由CSDN通过智能技术生成

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)

注意中文字符前一定要加 u

修改源码后生成的图像

附件

修改前的 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()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值