Seaborn:来自两个数据框的分组箱线图

时间:2018-06-26 14:10:31

标签: python plot seaborn

我想绘制带有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)

给我一​​个漂亮的箱线图enter image description here

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

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

但是我不知道如何设置xy来获得与设置为None相同的行为。

感谢您的帮助或建议。

最好, 罗马

1 个答案:

答案 0 :(得分:1)

似乎您的数据框为“宽”格式。您需要将其转换为“长”格式(pandas.meltpandas.wide_to_long之类的功能应会有所帮助)。您必须整理数据,以使其最终成为N x 3数据框,其列为1.您的基因表达量,2。癌症类型和3.您的新分类变量(类似于“吸烟者” )。如果您希望拥有另一个变量(例如基因名称),则可以有3列以上。但是,这三个必须存在才能使图起作用。

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

然后您的命令将类似于:

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