我想绘制带有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
属性以获得与分组boxplot相同的绘图。我知道它应该类似于:
seaborn.boxplot(x=?, y=?, hue='kind', data=both)
但我无法弄清楚如何设置x
和y
以获得相同的行为,就好像它们被设置为None
一样。
感谢您的任何帮助或建议。
最好,罗马
似乎您的数据框架采用“宽”格式。你需要将它转换为'long'格式(pandas.melt
或pandas.wide_to_long
等函数应该有帮助)。你必须组织你的数据,这样它就会成为一个N x 3数据帧,其列为1.你的基因表达量,2。癌症类型,以及3.你的新分类变量(类似于'吸烟' )。如果您希望拥有另一个变量(例如基因名称),则可以包含3列以上的列。但这三个需要存在才能使情节发挥作用。
(我可能误解了您的数据内容,但这是我对您测量的内容和变量的理解。)
然后你的命令看起来像:
seaborn.boxplot(x='measurement', y='cancer_type', hue='kind', data=both)