使用Python根据两个变量的标称值绘制几个连续变量

时间:2016-03-24 09:08:10

标签: python plot seaborn

我想创建一个数字,显示人们在游戏中赚取多少钱(连续变量)作为其他三个变量的分类值的函数。第一个变量是在Money游戏之前是否包含或排除了人,第二个变量是人们是否知道他们的决策伙伴而最后一个是游戏轮次(参与者与已知的共同玩家进行了5轮比赛,5与未知的共同球员的轮次)。我知道如何使用FacetGrid绘制小提琴图作为两个分类变量的值的函数(见下文),但我没有设法为它添加另一层。

g= sns.FacetGrid(df_long, col = 'XP_Social_Condition', size=5, aspect=1)
g.map(sns.boxplot, 'DM partner', 'Money', palette = col_talk) 

我创建了两个数据帧版本:我的初始版本和融合版本(见下图)。我还尝试使用f, (ax_l, ax_r) =一起创建两个图,但这似乎不会将FacetGrid图作为图中的图...您可以在下面看到链接以查看数据和图的种类我想用作一个子图 - 一个显示一个已知的玩家,一个显示未知的玩家。如果有帮助,我很乐意分享这些数据。

我现在尝试了提出的解决方案

grid = sns.FacetGrid(melted_df, hue='DM partner', col='XP_Social_Condition')
grid.map(sns.violinplot, 'Round', 'Money')

但它仍然无效。这显示了下面显示的图,第三个色调变量不能很好地显示不同的条件。

here is the new figure I get - almost there

data - original and melted

非常感谢你的帮助。

1 个答案:

答案 0 :(得分:1)

好的,您想根据三个不同的分类变量创建一个连续数据图吗?

我认为您正在寻找的是:

grid = sns.FacetGrid(melted_df, col='XP_Social_Condition')
grid.map(sns.violinplot, 'Round', 'Money', 'DM partner').add_legend()

col会产生两个图表,每个值XP_Social_Condition一个。传递给grid.map的三个值会分割数据,因此'Round'成为x轴,'money'成为y轴,'DM partner'成为颜色。您可以玩并交换值'DM_partner''XP_Social_Condition''Round'

结果现在看起来应该是thisthis'Round''DM Partner'交换了。