我有一个数据框架,我想用它来创建一个树状图,类似于附图中的一个。下面是生成数据的代码,后面是我尝试过的代码,但是树状图没有给出想要的结果。
生成数据的代码:
import pandas as pd
data = {'ID': ['C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7', 'C8', 'C9','C10', 'C11', 'C12','C13', 'C14'],
'A': [1, 1, 2, 2, 2, 1, 1, 1, 2, 1, 1, 2, 2, 2],
'B':[3, 3, 1, 1, 1, 1, 1, 2, 3, 3, 2, 2, 2, 2],
'Cat': ['UP','UP','GONE','GONE','GONE','GONE','GONE','GONE','UP','UP','GONE','MID','MID','MID']
}
df = pd.DataFrame(data)
print (df)上面创建底层数据,下面将创建计数--上述数据的聚合版本。这种聚合背后的逻辑是:
If A = 2 & B = 2 then Cat = MID ...
If A = 2 & B = 1 then Cat = GONE ...
If A = 1 & B = 1 then Cat = GONE ...
If A = 1 & B = 2 then Cat = GONE ...
If A = 2 OR A = 1 & B = 3 then Cat = UP根据基础资料,结果为UP 4例,中间3例,消失7例。
data_agg = {'Cat': ['UP', 'GONE', 'MID'],
'Count': [4, 7, 3]
}
df_agg = pd.DataFrame(data_agg)
print (df_agg)我尝试使用squarify来创建我想要的图表,但是它没有给出所期望的结果。我使用的squarify代码如下:
colors=['red','green','blue']
squarify.plot(df_agg['Count'], label=df_agg['Cat'], color=colors, alpha=0.5)
squarify.plot(df_agg['Count'], label=df_agg['Cat'], color=colors, alpha=0.5)我需要创建一个图表,如最后的图片和任何帮助,在创建这将是非常感谢。目前我得到的结果是

所需的图表结果是这样的,在Axis上显示变量A和B:

发布于 2022-02-10 12:24:09
我认为squarify不是您想要的工具,因为它只允许在固定的空间中按大小比较数量(这里是df_agg‘’Count‘)。
https://stackoverflow.com/questions/71064875
复制相似问题