我想绘制带有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)
但是,我无法正确设置hue
,x
和y
属性来获得与分组箱图相同的图。
我知道它应该类似于:
seaborn.boxplot(x=?, y=?, hue='kind', data=both)
但是我不知道如何设置x
和y
来获得与设置为None
相同的行为。
感谢您的帮助或建议。
最好, 罗马
答案 0 :(得分:1)
似乎您的数据框为“宽”格式。您需要将其转换为“长”格式(pandas.melt
或pandas.wide_to_long
之类的功能应会有所帮助)。您必须整理数据,以使其最终成为N x 3数据框,其列为1.您的基因表达量,2。癌症类型和3.您的新分类变量(类似于“吸烟者” )。如果您希望拥有另一个变量(例如基因名称),则可以有3列以上。但是,这三个必须存在才能使图起作用。
(我可能误解了数据的内容,但这是我对要测量的内容和变量的理解。)
然后您的命令将类似于:
seaborn.boxplot(x='measurement', y='cancer_type', hue='kind', data=both)