gpt4 book ai didi

python - 从 pandas 数据框中重新排列条形图中的分组

转载 作者:太空宇宙 更新时间:2023-11-03 16:06:12 24 4
gpt4 key购买 nike

我想要一个分组条形图,但默认绘图没有按照我想要的方式进行分组,而且我正在努力让它们正确重新排列。

数据框如下所示:

     user  year  cat1  cat2  cat3  cat4  cat50    Brad  2014   309   186   119   702    731    Brad  2015   280   177   100   625    752    Brad  2016   306   148   127   671    743   Brian  2014   298   182   131   702    734   Brian  2015   295   125   117   607    765   Brian  2016   298   137    97   596    756   Chris  2014   309   171   111   654    727   Chris  2015   251   146   105   559    768   Chris  2016   231   130   105   526    75etc

在其他地方,代码生成两个变量:user1 和 user2。我想生成一个条形图来比较这两个用户在一段时间内在 cat1、cat2 和 cat3 中的数量。例如,如果 user1 和 user2 是 Brian 和 Chris,我想要一个如下所示的图表:

grouped bar chart

从美学角度来说:我更喜欢年份标签是垂直文本或适合单行的字体大小,但目前真正让我困惑的是数据框枢轴。

最佳答案

选择您想要绘图的用户子集。使用pivot_table稍后通过转置和取消堆叠将 DF 转换为要绘制的所需格式。

import matplotlib.pyplot as plt

def select_user_plot(user_1, user_2, cats, frame, idx, col):
frame = frame[(frame[idx[0]] == user_1)|(frame[idx[0]] == user_2)]
frame_pivot = frame.pivot_table(index=idx, columns=col, values=cats).T.unstack()
frame_pivot.plot.bar(legend=True, cmap=plt.get_cmap('RdYlGn'), figsize=(8,8), rot=0)

最后,

选择要包含在条形图中的用户和类别。

user_1 = 'Brian'
user_2 = 'Chris'
cats = ['cat1', 'cat2', 'cat3']

select_user_plot(user_1, user_2, cats, frame=df, idx=['user'], col=['year'])

Image

注意:这接近OP发布的情节。(年份显示为图例而不是刻度标签)

关于python - 从 pandas 数据框中重新排列条形图中的分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39761916/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com