我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...

基于python,苏南大叔使用plot画了一个体现鸢尾花数据的散点图。那么,在图中可以添加titlesuptitlexlabelylabel等文字,但是一旦把这些文字换成中文后,就会显示为框框了。这个问题如何解决呢?这就是本文要解决的主要问题。

苏南大叔:python的plot画图,如何显示中文?中文显示方框怎么办? - python-plot-中文方框
python的plot画图,如何显示中文?中文显示方框怎么办?(图3-1)

大家好,这里是苏南大叔的“程序如此灵动”博客,记录苏南大叔和计算机代码的故事。本文测试环境:win10python@3.11.0pandas@1.5.3numpy@1.24.2matplotlib@3.7.1。另外,值得特别说明的是:plot还有基于R语言的版本,本文的环境是python

中文显示框框

基于上一篇文章的代码,

把显示文字的titlesuptitlexlabelylabel等选项,换成中文的话,就会显示框框,如下图所示:

苏南大叔:python的plot画图,如何显示中文?中文显示方框怎么办? - plot中文方框
python的plot画图,如何显示中文?中文显示方框怎么办?(图3-2)

同时有报错信息:

UserWarning: Glyph 38598 (\N{CJK UNIFIED IDEOGRAPH-96C6}) missing from current font.

发生这个问题的原因,就是plot的字体设置问题,并没有识别到显示中文的相关字体(比如simhei)。有关字体的描述,可以参考:

画图程序的顶部标题栏部分,倒是正常显示中文了。很奇怪吧...

解决方案

解决方案就是修改plot的默认配置,使他识别中文字体。当然,如果想显示别的中文字体,请修改对应的代码里面的字体名称。
设置为黑体:

plt.rcParams["font.sans-serif"] = ["SimHei"]

设置为楷体:

plt.rcParams['font.family']=['KaiTi']

苏南大叔:python的plot画图,如何显示中文?中文显示方框怎么办? - 中文方框解决方案
python的plot画图,如何显示中文?中文显示方框怎么办?(图3-3)

网上也有写着去修改site-packages代码的方式,这个就比较原始暴力了。如果您喜欢,也可以在对应packages代码里面全局搜索关键词,来完成这项操作。

减号的问题

实际上设置中文字体后,还可能会遇到下面的报错:

UserWarning: Glyph 8722 (\N{MINUS SIGN}) missing from current font

这个是由于无法渲染减号所造成的,解决方案是:

plt.rc('axes', unicode_minus=False)

完整测试代码

本文的完整测试代码如下:

这是付费可看内容,收费5元。

题外话

题外话就是iris的数据和plt的横纵坐标标签之间是存在着对应关系的。下面的代码显示了对应关系的另外一种理解角度。

column_names = ["萼长", "萼宽", "瓣长", "瓣宽", "种类"]
iris = np.array(df_iris)
# ...
x = 0
y = 1
data_x = iris[:, x]
data_y = iris[:, y]
data_z = iris[:, 4]
plt.scatter(data_x, data_y, c=data_z, cmap="brg")
plt.xlabel(column_names[x])
plt.ylabel(column_names[y])
# ...

相关文章

中文乱码问题,在编程过程中非常常见。但是不同的环境下,解决方案却是大不相同。如下有很多中文乱码的经验文章,请查看:

结束语

更多pythonmatplotlib画图的问题,可以参考:

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。

 【福利】 腾讯云最新爆款活动!1核2G云服务器首年50元!

 【源码】本文代码片段及相关软件,请点此获取更多信息

 【绝密】秘籍文章入口,仅传授于有缘之人   python    plot