python簇状柱形图_使用Matplotlib绘制堆积条形图

本文介绍了如何使用Python的Matplotlib库创建堆积簇状柱形图,以便更好地比较和分析分组数据。通过示例展示了如何处理游戏销量数据,通过排序和调整条形图布局,使得可视化效果更加清晰易读。
摘要由CSDN通过智能技术生成

条形图非常通用,易于阅读,并且相对容易构建。

ffb60b6f675239bb8aa15399a8da1d4a.png

就像任何可视化一样,条形图也有一些缺点,例如它们的可伸缩性较差。

条形图太多会使人感到难以阅读,尤其是在当我们处理层次化的类别,也就是当我们有需要可视化的组和子组时,这个问题更常见。

ce2a298b537bc2f6ee364e242410e7a8.png

在这种情况下,堆积条形图是一个很好的选择,它让我们能更好地比较和分析数据。

b5c876fa79cbd1787ac825c299e5c22d.png

在本文中,我们将探讨如何使用Python的Matplotlib构建这些可视化图形。

我将使用一个简单的数据集来保存全球的游戏副本的销售数据(虽然这个数据集已经过时,但它适合我们的示例)。

import numpy as npimport pandas as pdimport matplotlib.pyplot as pltdf = pd.read_csv('../data/vgsales.csv')df.head()

58600ff2ec36ae8a4073f46b9ad8e796.png

我们接下来要将平台和地区的销售情况可视化。

将区域划分为列很有帮助,我们只需要按“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

2d12ea60856659f6eaee1564c249c21c.png

数据中的值太多了,即使排除空记录,图表中的条形图也会太多。

我们为每个平台和区域绘制一个条形图,并查看结果。

# 定义图形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&

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
A:Python可以利用pandas和matplotlib等工具绘制簇状柱形图和带标记的堆积折线图。 绘制簇状柱形图的步骤如下: 1. 读取Excel中的数据到pandas DataFrame中; 2. 根据需要对数据进行处理(例如,按照某一列进行分组等); 3. 利用matplotlib.pyplot模块绘制簇状柱形图; 4. 设置坐标轴标签、图例等,美化图形。 绘制带标记的堆积折线图的步骤类似,只需要利用matplotlib.pyplot模块的plot函数绘制折线,使用stackplot函数绘制堆积图,然后设置标记等即可。 下面是一个例子: ``` import pandas as pd import matplotlib.pyplot as plt # 读取Excel数据 data = pd.read_excel('sample.xlsx') # 按照'Region'列进行分组计算各项指标的总和 grouped_data = data.groupby('Region').sum() # 绘制簇状柱形图 width = 0.35 # 柱形宽度 ind = range(len(grouped_data)) # 横坐标刻度 fig, ax = plt.subplots() rect1 = ax.bar(ind, grouped_data['Sales'], width, color='r', label='Sales') rect2 = ax.bar([i + width for i in ind], grouped_data['Profit'], width, color='b', label='Profit') # 设置坐标轴标签、图例等 ax.set_xticks([i + width / 2 for i in ind]) ax.set_xticklabels(grouped_data.index) ax.set_xlabel('Region') ax.set_ylabel('Amount') ax.legend() # 绘制带标记的堆积折线图 fig, ax = plt.subplots() ax.plot(grouped_data.index, grouped_data['Sales'], marker='o', label='Sales') ax.stackplot(grouped_data.index, grouped_data['Profit'], grouped_data['Shipping Cost'], labels=['Profit', 'Shipping Cost']) ax.set_xlabel('Region') ax.set_ylabel('Amount') ax.legend() plt.show() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值