首页 Paddle框架 帖子详情
解决matplotlib使用中文
收藏
快速回复
Paddle框架 问答深度学习 72487 148
解决matplotlib使用中文
收藏
快速回复
Paddle框架 问答深度学习 72487 148

最近想在aistudio上用matplotlib上画一些图,但是考虑到用户群体,图上的标题、标签等还是需要显示成中文。

网上有很多matplotlib显示中文的教程,照着做了,但是遇到了一个很棘手的问题。一般都需要将字体放到/usr/share/fonts和matplotlib字体路径下。aistudio处于安全的考虑,字体文件路径是没有写权限的。这样一来网上所有的教程都成了摆设。

带着这个问题就在平台项目里找,在论坛里找,都没有找到。发现了一个有趣的现象,aistudio公开的项目里用到matplotlib的都是英文,没有发现使用中文的。

折腾了几天,还是找到了一种方法可以完美的解决。

我在项目里面写明了步骤,大家可以看一下。

https://aistudio.baidu.com/aistudio/projectdetail/390895

 

字体地址更换了:https://imgkr.cn-bj.ufileos.com/bfb1dc37-334c-4896-b9f4-fae0ea172328.ttf

记得重命名字体为simhei.ttf

 

感谢@doubi渣渣 提供的字体库,有需要的朋友可以自行下载

https://gitee.com/mirrors/noto-cjk/

7
收藏
回复
全部评论(148)
时间顺序
Action
#22 回复于2020-04

感谢分享

0
回复
MLTcola
#23 回复于2020-04

加上这俩句就行了

plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus'] = False

0
回复
thinc
#24 回复于2020-04
MLTcola #23
加上这俩句就行了 plt.rcParams['font.sans-serif']=['SimHei'] plt.rcParams['axes.unicode_minus'] = False

好像没太大作用吧

0
回复
阿斯顿aaC
#25 回复于2020-04
MLTcola #23
加上这俩句就行了 plt.rcParams['font.sans-serif']=['SimHei'] plt.rcParams['axes.unicode_minus'] = False

平台又更新了吗?不用那么麻烦了吗?

0
回复
AIStudio810260
#26 回复于2020-04
MLTcola #23
加上这俩句就行了 plt.rcParams['font.sans-serif']=['SimHei'] plt.rcParams['axes.unicode_minus'] = False

这个在AI Studio上不行

0
回复
AIStudio810260
#27 回复于2020-04
非常熟悉matplotlib还好,不太熟悉的话针对个别图字体属性不好加,比如饼图

饼图会加了,可是好像直方图又和饼图不一样?请问plt.bar()中文横坐标乱码应该改哪里?

0
回复
Action
#28 回复于2020-04
MLTcola #23
加上这俩句就行了 plt.rcParams['font.sans-serif']=['SimHei'] plt.rcParams['axes.unicode_minus'] = False

matplotlib.rcParams['font.sans-serif'] = ['SimHei'] 

matplotlib.rcParams['axes.unicode_minus'] = False 

0
回复
阿斯顿aaC
#29 回复于2020-04
饼图会加了,可是好像直方图又和饼图不一样?请问plt.bar()中文横坐标乱码应该改哪里?

直方图这个是最普通的方式,plt.xlabel和plt.ylabel来配置属性。详细可以参考matplotlib官方文档

0
回复
阿斯顿aaC
#30 回复于2020-04
饼图会加了,可是好像直方图又和饼图不一样?请问plt.bar()中文横坐标乱码应该改哪里?

参考https://matplotlib.org/api/_as_gen/matplotlib.pyplot.ylabel.html?highlight=ylabel#matplotlib.pyplot.ylabel

0
回复
自尊心3
#31 回复于2020-04

参照Day3的就可以了

0
回复
MLTcola
#32 回复于2020-04
Action #28
matplotlib.rcParams['font.sans-serif'] = ['SimHei']  matplotlib.rcParams['axes.unicode_minus'] = False 
展开

奥对,加上import matplotlib as plt

0
回复
AIStudio810260
#33 回复于2020-04
直方图这个是最普通的方式,plt.xlabel和plt.ylabel来配置属性。详细可以参考matplotlib官方文档

plt.xlabel可以设置的是中文坐标轴的名称,但是请问这种情况坐标轴怎么显示中文呢?

0
回复
阿斯顿aaC
#34 回复于2020-04
plt.xlabel可以设置的是中文坐标轴的名称,但是请问这种情况坐标轴怎么显示中文呢? [图片]

你这个是刻度的中文显示,使用plt.xticks

针对你的问题写了教程,可以fork后运行查看

https://aistudio.baidu.com/aistudio/projectdetail/441955

0
回复
AIStudio810260
#35 回复于2020-04
你这个是刻度的中文显示,使用plt.xticks 针对你的问题写了教程,可以fork后运行查看 https://aistudio.baidu.com/aistudio/projectdetail/441955
展开

感谢!彻底解决了项目里的中文显示问题。

0
回复
micahvista
#36 回复于2020-04

matplotlib官方文档里面有翻翻看

0
回复
micahvista
#37 回复于2020-04

有时候加进去了中文但是可能会出现位置不对的情况

 

0
回复
micahvista
#38 回复于2020-04

不过matplotlib还是有看平台,百度这个可能会出错

0
回复
thinc
#39 回复于2020-04

方法二显示中文失败了吧。

0
回复
阿斯顿aaC
#40 回复于2020-04
thinc #39
方法二显示中文失败了吧。

测试过是没有问题的,你把字体文件按照教程放对地方,然后重启一下环境试试

0
回复
阿斯顿aaC
#41 回复于2020-04
不过matplotlib还是有看平台,百度这个可能会出错

通常的解决方法在aistudio上没有办法直接用

0
回复
需求/bug反馈?一键提issue告诉我们
发现bug?如果您知道修复办法,欢迎提pr直接参与建设飞桨~
在@后输入用户全名并按空格结束,可艾特全站任一用户