终于解决python画图不显示中文的问题了

运行环境mac

发现使用matplotlib等相关绘图包时中文会出现方块,无法显示,试了网上各种方法都不行。。后来发现其实是本地库根本就没有中文字体包,这样的话怎么修改代码都是没用的。。。卒

首先查看是否有相关中文字体包

from matplotlib.font_manager import FontManager
import subprocess

mpl_fonts = set(f.name for f in FontManager().ttflist)

print('all font list get from matplotlib.font_manager:')
for f in sorted(mpl_fonts):
    print('\t' + f)

然后发现
在这里插入图片描述
根本一个中文字体包都没有。。如果你发现你有类似SimHei,FangSong等字体,那恭喜你可以不用看本文了。

首先下载一个中文字体,比如选择SimHei,黑体。

然后将它放置到字体路径下: python3.7/site-packages/matplotlib/mpl-data/fonts/ttf (大概是长这样)

如果你不知道路径在哪儿,在命令行里输入

python -c "import matplotlib; print(matplotlib.matplotlib_fname())"

可获取matplotlib的相关路径,然后接着进去mpl-data/fonts/ttf 即可。

讲下载好的字体放在这里,如果不知道怎么复制到这里 可以 cp 字体所在路径 . 将字体复制到当前位置。(记得加.)

在这里插入图片描述
ls查看一下,发现simhei字体已经复制到这里。

紧接着在代码开头放入:

import matplotlib as mpl  
mpl.rcParams['axes.unicode_minus'] = False
mpl.rcParams['font.family'] = 'SimHei'

from matplotlib.font_manager import _rebuild
_rebuild()

一定要记住这个rebuild,因为需要重新加载字体库才能检测到新导入的字体(类似关机重启)。

接下来就代码中就有能显示中文了。

### 回答1: 在Python画图显示中文的原因是因为默认的字体库支持中文字符。解决这个问题的方法有两种。 第一种方法是更换字体库。可以使用以下代码来更换字体库: ``` python import matplotlib.pyplot as plt plt.rcParams['font.sans-serif'] = ['SimHei'] # 设置字体为黑体 plt.rcParams['axes.unicode_minus'] = False # 解决负号显示问题 # 之后就可以正常使用中文字符了 plt.plot([1, 2, 3, 4], [3, 4, 5, 6], label='中文测试') plt.legend() plt.show() ``` 在这个例子中,我们使用了SimHei字体库来显示中文字符。可以根据需要更换其他的中文字体库。 另一种方法是使用Unicode转义字符来显示中文。在字符串前加上`u`表示字符串为Unicode格式,然后使用字符的Unicode编码来表示中文字符。比如: ``` python import matplotlib.pyplot as plt # 使用Unicode转义字符显示中文字符 plt.plot([1, 2, 3, 4], [3, 4, 5, 6], label=u'\u4e2d\u6587\u6d4b\u8bd5') plt.legend() plt.show() ``` 这个例子中使用了`\u4e2d\u6587\u6d4b\u8bd5`来表示中文字符"中文测试"的Unicode编码。 无论使用哪种方法,都可以让Python画图显示中文字符。 ### 回答2: 在Python画图显示中文的原因是因为默认情况下,Python的绘图库matplotlib支持使用中文显示。这是因为matplotlib库默认使用的是英文的字体库,导致无法渲染中文字符。 要解决这个问题,需按照以下步骤操作: 1. 安装中文字体库:需要下载适用于matplotlib的中文字体库。常用的字体库有思源黑体、宋体等。可以在网上搜索并下载相应字体库的压缩文件。 2. 解压字体库文件:将下载的压缩文件解压缩到任意目录,得到字体文件(通常以.ttf为后缀)。 3. 查找字体安装路径:查看操作系统中字体文件的安装路径,通常是在"C:\Windows\Fonts"文件夹中(对于Windows系统)。 4. 复制字体文件:将字体文件复制到matplotlib的字体文件夹中。该文件夹通常位于Python的安装目录下的“Lib\site-packages\matplotlib\mpl-data\fonts\ttf”文件夹中。如有需要,可以创建一个新的文件夹并将字体文件放在其中。 5. 修改matplotlib配置文件:打开matplotlib的配置文件,通常位于Python的安装目录下的“Lib\site-packages\matplotlib\mpl-data”文件夹中的matplotlibrc文件。找到其中的“font.family”一行,并将其值修改为字体文件的名称(去除后缀),例如“font.family: SimSun”。 6. 保存并关闭文件:将修改后的配置文件保存并关闭。 7. 重新运行绘图程序:重新运行绘图程序,此时就可以正常显示中文了。 需要注意的是,以上步骤的具体路径和文件名可能因操作系统和Python版本的同而有所同。因此,在实际操作中需要根据具体情况进行相应的调整。 以上就是解决Python绘图显示中文的方法。通过安装中文字体库,并修改matplotlib的配置文件,可以顺利实现中文显示。 ### 回答3: Python画图显示中文可以通过以下几种方法来解决。 第一种方法是使用Matplotlib库的rcParams方法来设置字体,代码如下: ``` import matplotlib.pyplot as plt plt.rcParams['font.sans-serif'] = ['SimHei'] # 设置字体为黑体 plt.plot([1, 2, 3], [4, 5, 6]) plt.title('标题') plt.show() ``` 第二种方法是使用FontProperties方法,代码如下: ``` import matplotlib.pyplot as plt from matplotlib.font_manager import FontProperties font = FontProperties(fname=r"C:\Windows\Fonts\simhei.ttf") # 设置字体为黑体 plt.plot([1, 2, 3], [4, 5, 6]) plt.title('标题', fontproperties=font) plt.show() ``` 第三种方法是使用Seaborn库,该库是在Matplotlib的基础上进行了更高级的封装,可以更方便地设置中文显示,代码如下: ``` import seaborn as sns sns.set_style("whitegrid", {"font.sans-serif": ['SimHei']}) # 设置字体为黑体 sns.lineplot([1, 2, 3], [4, 5, 6]) plt.title('标题') plt.show() ``` 需要注意的是,以上的方法都需要事先安装相应的字体文件,例如SimHei是黑体字体的一种。可以通过在系统中搜索相关字体文件进行安装,或者从互联网上下载相应的字体文件。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值