Seaborn:来自两个Dataframes的Grouped Boxplot

问题描述 投票:1回答:1

我想绘制带有seaborn的分组箱图,但数据存在于两个不同的DataFrame对象中。

数据框具有相同的行和列,具有不同的值并具有形状:(10.000 x 24)。柱子是癌症类型,在这种情况下行是基因。

当我只绘制其中一个数据帧时,一切看起来都不错。继docs之后,我加入了两个数据框,如:

df1 = pd.read_csv('a.csv')
df2 = pd.read_csv('b.csv')
# categorical variable similar to 'smoker' attribute in tips dataset
df1['kind'] = 'catA'
df2['kind'] = 'catB'
both = pd.concat((df1, df2))

当我现在绘制数据时,一切看起来都很好:

seaborn.boxplot(data=both)

给了我一个漂亮的boxplotenter image description here

但是,我无法正确设置huexy属性以获得与分组boxplot相同的绘图。我知道它应该类似于:

seaborn.boxplot(x=?, y=?, hue='kind', data=both)

但我无法弄清楚如何设置xy以获得相同的行为,就好像它们被设置为None一样。

感谢您的任何帮助或建议。

最好,罗马

python plot seaborn
1个回答
1
投票

似乎您的数据框架采用“宽”格式。你需要将它转换为'long'格式(pandas.meltpandas.wide_to_long等函数应该有帮助)。你必须组织你的数据,这样它就会成为一个N x 3数据帧,其列为1.你的基因表达量,2。癌症类型,以及3.你的新分类变量(类似于'吸烟' )。如果您希望拥有另一个变量(例如基因名称),则可以包含3列以上的列。但这三个需要存在才能使情节发挥作用。

(我可能误解了您的数据内容,但这是我对您测量的内容和变量的理解。)

然后你的命令看起来像:

seaborn.boxplot(x='measurement', y='cancer_type', hue='kind', data=both)
© www.soinside.com 2019 - 2024. All rights reserved.