python中文乱码-ValueError: Key axes.unicode_minus: Could not convert “flase“ to bool错误的解决方法

一、背景

本人按照下面的参考链接中的永久解决乱码问题对应的方法一步步地执行时,出现了错误【ValueError: Key axes.unicode_minus: Could not convert "flase" to bool】

matplotlib中文乱码的两种解决方案 - 云+社区 - 腾讯云

二、解决方法

在百度搜索无果后,我突然意识到Flase是什么鬼单词?正确的拼写不应该是False吗?再回过头去看大牛写的文章,发现他写的是False,他并没错,是matplotlib的开发者出错了。

于是我把那个配置文件中的该选项改成了False之后,就直接运行下面的代码。

# -*- coding:utf-8 -*-


import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np

# 消除中文乱码问题,注意中文字符串前加u,比如u'爱的信仰'
# mpl.rcParams['font.sans-serif'] = ["SimHei"]
# mpl.rcParams['axes.unicode_minus'] = False

font_style = dict(fontsize=18, weight="black")
# First create sample data
x = np.linspace(0, 2 * np.pi, 500)
y = np.sin(x) * np.exp(-x)
# Create just a figure and only one subplot
fig, ax = plt.subplots(1, 2, sharey=True)
# subpiot(121)
ax1 = ax[0]
ax1.plot(x, y, "k--", lw=2)
ax1.set_title('折线图')
ax1.grid(ls=":", lw=1, color="gray", alpha=0.8)
# subplot(122)
ax2 = ax[1]
ax2.scatter(x, y, s=10, c="skyblue", marker="o")
ax2.set_title("散点图")
# Create a figure title
plt.suptitle("创建一张画布和两个子区的绘图模式", **font_style)
#  Show figure and subplot(s)
plt.show()

在我的font文件夹下存在SimHei.ttf字体文件的时候,它的绘图是正确的。

python中文乱码-ValueError: Key axes.unicode_minus: Could not convert “flase“ to bool错误的解决方法_第1张图片

 三、回顾

其实我当时没有改正这个错误之前,按照大牛的意见执行下面的rebuild代码时,出现了错误。

from matplotlib.font_manager import _rebuild
_rebuild() #reload一下

# ImportError: cannot import name '_rebuild' from 'matplotlib.font_manager'

之后我才突然意识到Flase关键词的错误,改正拼写错误后,我再执行上面的rebuild代码,还是会出现导入异常。

不管了,已经可以显示中文了,还rebuild个屁(开玩笑hhhh)。 

不过我猜测可能是因为matplotlib版本变化(本人版本为3.5.1),或者python(本人版本3.8)版本变化,导致每一次run文件的时候都会重新缓存字体,就不需要执行rebuild代码了。

因为我在font_manager文件和官方文档中都没有发现rebuilt模块。

python中文乱码-ValueError: Key axes.unicode_minus: Could not convert “flase“ to bool错误的解决方法_第2张图片

当然了,如果有大牛知道这个导入异常的真实原因和解决方案,不妨评论区分享出来!!!重谢!!!

你可能感兴趣的:(Python,python,开发语言)