解决Python matplotlib中文乱码问题

在学习matplotlib过程中,因为绘图需要显示文字,但是如果我们想要好看一点的格式就会输出中文,但是输出中文往往是乱码,网上找了很多资料看上去并不是很好,最后经过个人实践下面的这种方法是最实用的。

【未解决乱码之前的案例】

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import matplotlib


# fname 为 你下载的字体库路径,注意 SimHei.ttf 字体的路径
font1 = matplotlib.font_manager.FontProperties(fname="D:\python-workspace\SimHei.ttf")

raw_data = {'水果': ['香蕉', '苹果', '草莓'],
            '价格': [2,4,10],
            '数量': [5,3,6],}
df = pd.DataFrame(raw_data)

pos = list(range(len(df['水果'])))
width = 0.25
plt.bar([p - width/2 for p in pos], df['价格'], width, color='#FFCCCC', label=df['水果'][0])
plt.bar([p + width/2 for p in pos], df['数量'], width, color='#6699CC', label=df['水果'][1])
plt.xticks(np.linspace(0, 2, 3),df['水果'],fontproperties=font1)
plt.legend(['价格', '数量'], loc='upper left')

plt.show()




【输出结果】

 

【解决乱码之后的代码】

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt


plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号



raw_data = {'水果': ['香蕉', '苹果', '草莓'],
            '价格': [2,4,10],
            '数量': [5,3,6],}
df = pd.DataFrame(raw_data)

pos = list(range(len(df['水果'])))
width = 0.25
plt.bar([p - width/2 for p in pos], df['价格'], width, color='#FFCCCC', label=df['水果'][0])
plt.bar([p + width/2 for p in pos], df['数量'], width, color='#6699CC', label=df['水果'][1])
plt.xticks(np.linspace(0, 2, 3),df['水果'])
plt.legend(['价格', '数量'], loc='upper left')

plt.show()




【结果】

 

【总结】

对比两张图,前面一张图使用的是下载的字体然后可以显示中文,但是 有些时候并不是万能的,所以摒弃第一种方案,接下来就是第二种方案两行代码解决。

plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号

 

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值