用 Python 堆积图

Posted

技术标签:

【中文标题】用 Python 堆积图【英文标题】:Stacked Plot With Python 【发布时间】:2017-08-13 00:50:06 【问题描述】:

我正在使用 Python 模块(如 Pandas、Matplotlib)为大学项目制作图表。 我在数据透视表中排序结果时遇到了一些问题。

这是一个函数的主体,输入 3 个列表([2017-03-03, ...]['Username1', 'Username2',...][1012020,103024,...]),分析数据并制作图表。

data = [date_list,username,field]
username_no_dup = list(set(username))

rows = zip(data[0], data[1], data[2])
headers = ['Date', 'Username', 'Value']
df = pd.DataFrame(rows, columns=headers)
df = df.sort_values('Value', ascending=False)
#*sort_values works but it is not sorting when converting to Pivot Table*
pivot_df = pd.pivot_table(df ,index='Date', columns='Username', values='Value')
pivot_df.loc[:,username_no_dup].plot(kind='bar', stacked=True, color=color_list, figsize=(15,7))

我想按图表 X 线附近值较大的值排序。大家解决了这个问题???谢谢

这是按值排序的df 的顶行:

[['2017-03-15','SSL1_APP',1515091]
['2017-03-16','SSL1_APP',1373827]
['2017-03-18','SSL1_APP',1136483]
['2017-03-21','SSL1_APP',601810]
['2017-03-17','SSL1_APP',325561]
['2017-03-15','KE77_APP',284971]
['2017-03-16','AF77_APP',222588]
['2017-03-16','MI77_APP',222148]
['2017-03-15','AF77_APP',202224]
['2017-03-15','MI77_APP',191791]
['2017-03-17','AF77_APP',187709]
['2017-03-16','PC77_APP',185766]
['2017-03-15','NE77_APP',177475]
['2017-03-18','FBW2_APP',175156]
['2017-03-16','NE77_APP',174570]
['2017-03-17','BFD1_APP',164238]
['2017-03-15','BFD1_APP',162931]
['2017-03-20','AF77_APP',152186]
['2017-03-17','PC77_APP',148727]
['2017-03-18','MI77_APP',147460]
['2017-03-16','BFD1_APP',145815]
['2017-03-20','BFD1_APP',145449]
['2017-03-15','PC77_APP',144959]
['2017-03-20','SSL1_APP',141719]]

第一张图片是我创建的情节。第二个是我想要的结果,用 Excel 绘制:

【问题讨论】:

【参考方案1】:

注意: 这是对输入排序主题的 Python 答案。

这样做的一种方法是使用二维列表(列表的列表),然后对其进行排序。

这就是你一直在使用它的方式:

data = [date0,username0,randint0,date1,username1, ....

尝试使用二维列表:

data = [[date0,username0,randint0], [date1,username1,randint1]...

使用 .sort() 方法并将语法更改为如下所示:

data.sort() #Sort it, by default it will be a decreasing list.
rows = zip(data[0][0], data[0][1], data[0][2])

标准的 .sort() 方法有其局限性(一个为浮点数),因此如果没有返回理想的输出,请尝试使用 .sort() 参数,以下是关于该主题的见解:How to use .sort()

如果您在使用浮点数时遇到问题,请查看对您有帮助的答案here。

【讨论】:

我已经尝试过该解决方案,但没有好的结果!不能对数据透视表进行排序吗?因为这给了我想要的结果......但没有排序......

以上是关于用 Python 堆积图的主要内容,如果未能解决你的问题,请参考以下文章

python可视化---堆积柱状图

python 堆积的条形图

Python:基于同一DF中多列值的堆积条形图[重复]

python中堆积百分比条形图的问题[重复]

Python Pandas 中的聚集堆积条形图 [关闭]

使用 matplotlib 绘制堆积条形图,保持 pandas 数据框的顺序,因为它使用 python