查看: 146|回覆: 1

[Ubuntu] ubuntu系统下matplotlib中文乱码问题的解决方法

[複製鏈接]

2

主題

0

回帖

0

積分

热心网友

金币
0
閲讀權限
220
精華
0
威望
0
贡献
0
在線時間
0 小時
註冊時間
2010-4-9
發表於 2023-6-14 00:00:00 | 顯示全部樓層 |閲讀模式

在ubuntu 下利用matplotlib 绘图的时候,图像上中文无法显示。以下是我的解决办法:

1. 下载中文字体simhei.ttf, 网址为http://fontzone.net/download/simhei

2. 搜索 matplotlib 字体的安装位置

?
1
$locate -b '\mpl-data'

会得到 这个路径/usr/share/matplotlib/mpl-data下面有fonts/ttf这个目录,进入这个目录,把刚才下载的simhei.ttf 字体复制到这个目录下,注意权限和归属是否与其它字体一致,我的是归于root用户的,所以用root 用户复制过来。

3. 删除当前用户matplotlib 的缓冲文件(如果没有直接进入第四步)

?
1
2
$cd ~/.cache/matplotlib
$rm -rf *.*

4.代码中调整字体

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/usr/bin/env python
#coding:utf-8
"""a demo of matplotlib"""
import matplotlib as mpl
from matplotlib import pyplot as plt
mpl.rcParams[u'font.sans-serif'] = ['simhei']
mpl.rcParams['axes.unicode_minus'] = False
years = [1950, 1960, 1970, 1980, 1990, 2000, 2010]
gdp = [300.2, 543.3, 1075.9, 2862.5, 5979.6, 10289.7, 14958.3]
#创建一副线图,x轴是年份,y轴是gdp
plt.plot(years, gdp, color='green', marker='o', linestyle='solid')
#添加一个标题
plt.title(u'名义GDP')
#给y轴加标记
plt.ylabel(u'十亿美元')
plt.show()
  1. 其中#coding:utf-8 说明文件编码格式
  2. mpl.rcParams[u'font.sans-serif'] = ['simhei'] 用simhei 字体显示中文
  3. mpl.rcParams['axes.unicode_minus'] = False 这个用来正常显示负号
  4. plt.title(u'名义GDP')这里的u 最好不要少

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

原文链接:http://blog.csdn.net/jeff_liu_sky_/article/details/54023745

回覆

使用道具 舉報

0

主題

2092

回帖

1萬

積分

琼殿精英

金币
10581
閲讀權限
220
精華
0
威望
0
贡献
0
在線時間
0 小時
註冊時間
2011-10-11
發表於 2026-6-13 14:15:34 | 顯示全部樓層
感谢楼主的分享!这个方法真的很实用,之前我也被matplotlib的中文显示问题困扰了很久。

按照你的步骤操作后,中文显示确实正常了,赞一个!补充几点小建议供大家参考:

1. 关于字体选择,simhei确实不错,不过如果想要更多选择的话,可以直接用系统自带的字体,比如WenQuanYi Micro Hei,在Ubuntu下直接sudo apt-get install fonts-wqy-microhei就能安装,不用另外下载。

2. 还有一种更简便的方法是直接修改matplotlib的配置文件matplotlibrc,把font.sans-serif和font.family都设置好,这样所有脚本都能自动使用中文字体,不用每次都在代码里单独设置。

3. 如果不想改代码,也可以用plt.rcParams['font.sans-serif'] = ['SimHei']这种方式在脚本开头统一设置,效果是一样的。

再次感谢楼主的详细教程,对新手特别友好!也希望有更多类似的技术贴分享~

圆梦公社 真是卧虎藏龙啊!
回覆

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 立即注册

本版積分規則

圆梦公社,专注于为全球华人提供纯粹技术交流的地方,请勿发布任何政治及违法的言论。如有相关侵权、举报、投诉及建议等,请发 E-mail:dzh188@hotmail.com

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部