data=data.pivot_table(index='Year', values=['JP_Sales','EU_Sales', 'NA_Sales','Global_Sales'], aggfunc=np.sum) data['NA_prop']=data['NA_Sales']/data['Global_Sales'] data['JP_prop']=data['JP_Sales']/data['Global_Sales'] data['EU_prop']=data['EU_Sales']/data['Global_Sales'] f,ax=plt.subplots(figsize=(12,8)) index=np.arange(len(data)) minColor = (117/256,79/256,68/256) midColor = (236/256,115/256,87/256) maxColor = (253/256,214/256,146/256) plt.bar(index,data.NA_prop,color=minColor) plt.bar( index,data.JP_prop, bottom=data.NA_prop, #通过bottom来设置这个柱子距离底部的高度 color=midColor ) plt.bar( index,data.EU_prop, bottom=data.NA_prop, #通过bottom来设置这个柱子距离底部的高度 color=maxColor ) font={ 'family':'DejaVu Sans', 'weight':'normal', 'size':12 } plt.xticks(index,data.index,rotation=90) plt.title('The Proportion of Different Areas',font) plt.ylabel('Proportion',font) plt.legend(['NA_Sales','JP_Sales','EU_Sales'],loc='upper center',ncol=3,framealpha=0.6) plt.show()
时间: 2024-01-08 08:03:50 浏览: 64
pandas pivot_table() 按日期分多列数据的方法
这段代码主要是通过使用 pandas 的 pivot_table 方法对数据进行聚合操作,然后计算不同地区销售额在总销售额中的比例,并使用 matplotlib 绘制了一个堆叠柱状图来展示这些比例。
首先,通过调用 pivot_table 方法对数据进行聚合操作,按照年份('Year')分组,并对 'JP_Sales'、'EU_Sales'、'NA_Sales' 和 'Global_Sales' 列进行求和,得到一个新的数据表 data。
接着,通过计算 'NA_Sales' 列除以 'Global_Sales' 列的结果,得到 'NA_prop' 列,表示北美地区销售额在总销售额中的比例。同样地,计算 'JP_Sales' 列和 'EU_Sales' 列在总销售额中的比例。
然后,创建一个图表对象 f 和坐标轴对象 ax,并设置图表的大小为 (12, 8)。
接下来,使用 plt.bar 方法绘制三个堆叠柱状图。首先绘制 'NA_prop' 列的柱状图,使用 minColor 来设置颜色。然后绘制 'JP_prop' 列的柱状图,设置底部距离为 'NA_prop' 列的值,并使用 midColor 来设置颜色。最后绘制 'EU_prop' 列的柱状图,同样设置底部距离为 'NA_prop' 列的值,并使用 maxColor 来设置颜色。
接下来,设置 x 轴刻度和标签,使用 data.index 来获取年份,并通过设置 rotation 参数来旋转刻度标签,使其垂直显示。
然后,设置图表的标题和 y 轴标签,并使用字典 font 来设置标题和标签的字体样式。
接着,使用 plt.legend 方法添加图例,分别对应三个柱状图的名称,并设置图例的位置为 'upper center',列数为 3,透明度为 0.6。
最后,使用 plt.show() 方法显示图表。
这样,您将得到一个堆叠柱状图,展示了不同地区销售额在总销售额中的比例。
阅读全文