我想创建一个数字,显示人们在游戏中赚取多少钱(连续变量)作为其他三个变量的分类值的函数。第一个变量是在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
非常感谢你的帮助。
答案 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'
。