解决pandas 作图无法显示中文的问题

  • Post category:Python

下面是“解决pandas作图无法显示中文的问题”的完整攻略。

问题描述

在使用pandas库进行作图时,有时候会发现中文字符无法正确显示,而只能显示为方格或其他乱码。这是因为pandas默认的字体不支持中文显示。针对这个问题,我们可以采取以下几个步骤解决。

解决步骤

1. 安装中文字体

首先,我们需要在系统中安装一些中文字体。因为pandas作图时,默认调用系统字体,而系统中没有中文字体,所以就无法正常显示中文字符。我们可以使用以下命令在Ubuntu系统中安装中文字体:

sudo apt-get install ttf-wqy-zenhei

如果是其他操作系统,也可以在网上找到相应的中文字体安装包进行安装。

2. 设置matplotlib的字体

安装中文字体后,我们需要在matplotlib中设置中文字体。我们可以在代码中加入以下两行代码来修改matplotlib的默认字体:

import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['WenQuanYi Micro Hei']

其中WenQuanYi Micro Hei是在Ubuntu系统中安装的中文字体名称。如果在其他系统中安装了其他中文字体,可以将名称替换成相应的字体名称。

3. 使用中文字符

完成上述设置后,我们就可以愉快地在pandas中使用中文字符进行数据可视化了。例如,在一张柱状图中加入中文字符标签的代码如下:

import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['WenQuanYi Micro Hei']

data = {'人数': [15, 20, 35, 25, 5]}
index = ['大一', '大二', '大三', '大四', '研究生']
df = pd.DataFrame(data=data, index=index)

df.plot(kind='bar', legend=False)

x_labels = df.index
plt.xticks(range(len(x_labels)), x_labels)

plt.xlabel('年级')
plt.ylabel('人数')
plt.title('各年级的人数')

plt.show()

如上代码所示,我们通过修改matplotlib默认字体,就可以在图表中成功显示中文字符。

示例说明

以下是两个使用中文字符的示例,它们的代码都采用了上述提供的解决方法。

示例1:柱状图

通过以下代码,实现了一张展示各省份GDP的柱状图,并使用中文字符进行标注。

import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['WenQuanYi Micro Hei']

data = {'GDP': [48, 42, 28, 25, 23, 19, 18, 17, 15]}
index = ['广东', '江苏', '山东', '浙江', '河南', '四川', '湖南', '河北', '湖北']
df = pd.DataFrame(data=data, index=index)

df.plot(kind='bar', legend=False)

x_labels = df.index
plt.xticks(range(len(x_labels)), x_labels)

plt.xlabel('省份')
plt.ylabel('GDP(万亿)')
plt.title('各省份GDP情况')

plt.show()

示例2:饼图

通过以下代码,实现了一张展示各机构报警次数的饼图,并使用中文字符进行标注。

import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['WenQuanYi Micro Hei']

data = {'次数': [12, 10, 5, 3]}
index = ['机构1', '机构2', '机构3', '机构4']
df = pd.DataFrame(data=data, index=index)

df.plot(kind='pie', y='次数', legend=False, autopct='%1.1f%%')

plt.title('各机构报警次数占比')

plt.show()

以上就是“解决pandas作图无法显示中文的问题”的完整攻略。