条形图非常通用,易于阅读,并且相对容易构建。
就像任何可视化一样,条形图也有一些缺点,例如它们的可伸缩性较差。
条形图太多会使人感到难以阅读,尤其是在当我们处理层次化的类别,也就是当我们有需要可视化的组和子组时,这个问题更常见。
在这种情况下,堆积条形图是一个很好的选择,它让我们能更好地比较和分析数据。
在本文中,我们将探讨如何使用Python的Matplotlib构建这些可视化图形。
我将使用一个简单的数据集来保存全球的游戏副本的销售数据(虽然这个数据集已经过时,但它适合我们的示例)。
import numpy as npimport pandas as pdimport matplotlib.pyplot as pltdf = pd.read_csv('../data/vgsales.csv')df.head()
我们接下来要将平台和地区的销售情况可视化。
将区域划分为列很有帮助,我们只需要按“Platform”对记录进行分组,并将NA_Sales到Global_Sales的值相加。
Groupby → Sum → Select Fields。
df_grouped = df.groupby('Platform').sum()[['NA_Sales','EU_Sales','JP_Sales','Other_Sales', 'Global_Sales']]df_grouped
数据中的值太多了,即使排除空记录,图表中的条形图也会太多。
我们为每个平台和区域绘制一个条形图,并查看结果。
# 定义图形fig, ax = plt.subplots(1, figsize=(16, 6))# 数字xx = np.arange(0, len(df_grouped.index))# 绘条形图plt.bar(x - 0.3, df_grouped['NA_Sales'], width = 0.2, color = '#1D2F6F')plt.bar(x - 0.1, df_grouped['EU_Sales'], width = 0.2, color = '#8390FA')plt.bar(x + 0.1, df_grouped['JP_Sales'], width = 0.2, color = '#6EAF46')plt.bar(x + 0.3, df_grouped['Other_Sales'], width = 0.2, color = '#FAC748')# 去除spinesax.spines['right'].set_visible(False)ax.spines['top'].set_visible(False)# x y细节plt.ylabel('Millions of copies')plt.xticks(x, df_grouped.index)plt.xlim(-0.5, 31)# 网格线ax.set_axisbelow(True)ax.yaxis.grid(color&