Python用matplotlib库画图中文和负号显示为方框的问题解决

  

下面为你详细讲解“Python用matplotlib库画图中文和负号显示为方框的问题解决”的完整攻略。

问题描述

在使用Python的matplotlib库进行图形绘制时,有时会发现中文和负号显示为方框的情况。这是因为matplotlib默认的字体不支持中文和负号,需要手动设置支持中文和负号的字体才能解决这个问题。

解决方法

1. 安装支持中文和负号的字体

在Ubuntu系统下,可以通过以下命令安装思源宋体:

sudo apt-get install fonts-noto-cjk

在Windows系统下,可以下载中文字体,在matplotlib的安装路径下的“mpl-data/fonts/ttf”目录下新建一个文件夹,将字体文件(.ttf格式)放入其中。

2. 修改matplotlib配置文件

在matplotlib的安装路径下的“mpl-data/matplotlibrc”文件中,找到以下两行:

# font.family         : sans-serif
# font.sans-serif     : Helvetica, Arial, sans-serif

将其修改为:

font.family         : sans-serif
font.sans-serif     : Noto Sans CJK SC, Bitstream Vera Sans, Lucida Grande, Verdana, Geneva, Lucid, Arial, Helvetica, Avant Garde, sans-serif

其中,“Noto Sans CJK SC”为中文支持的字体名称,需要根据你所安装的字体名称修改。

3. 示例说明

示例1:绘制中文标题和负号

import matplotlib.pyplot as plt

# 绘制柱形图
x = [1, 2, 3]
y = [-1, 0, 1]
plt.bar(x, y)

# 设置中文标题和负号显示
plt.rcParams['font.sans-serif'] = ['Noto Sans CJK SC']
plt.rcParams['axes.unicode_minus'] = False
plt.title('柱形图示例:中文标题和负号')
plt.show()

示例2:绘制中文坐标轴标签

import matplotlib.pyplot as plt

# 绘制折线图
x = [1, 2, 3]
y = [4, 5, 6]
plt.plot(x, y)

# 设置中文坐标轴标签
plt.rcParams['font.sans-serif'] = ['Noto Sans CJK SC']
plt.rcParams['axes.unicode_minus'] = False
plt.xlabel('横轴:中文标签')
plt.ylabel('纵轴:正常标签')
plt.show()

总结

通过安装支持中文和负号的字体,并修改matplotlib配置文件,即可解决Python用matplotlib库画图中文和负号显示为方框的问题。在绘制图形时,需要根据情况设置相关参数,使其支持中文和负号的显示。

相关文章