繁体   English   中英

为什么在seaborn plot中设置色调会改变一个点的大小?

[英]Why does setting hue in seaborn plot change the size of a point?

我试图制作的情节需要实现三件事。

  1. 如果在同一天以相同的分数进行测验,则该分数需要更大。
  2. 如果两个测验分数重叠,则需要有一些抖动,以便我们可以看到所有分数。
  3. 每个测验都需要有自己的颜色

这就是我要怎么做。

 import seaborn as sns
 import pandas as pd
 data = {'Quiz': [1, 1, 2, 1, 2, 1],
         'Score': [7.5, 5.0, 10, 10, 10, 10],
         'Day': [2, 5, 5, 5, 11, 11],
         'Size': [115, 115, 115, 115, 115, 355]}

 df = pd.DataFrame.from_dict(data)

sns.lmplot(x = 'Day', y='Score', data = df, fit_reg=False, x_jitter = True, scatter_kws={'s': df.Size})
plt.show()

在此处输入图片说明

设置色调,几乎可以满足我的所有需求,结果就是这样。

 import seaborn as sns
 import pandas as pd
 data = {'Quiz': [1, 1, 2, 1, 2, 1],
         'Score': [7.5, 5.0, 10, 10, 10, 10],
         'Day': [2, 5, 5, 5, 11, 11],
         'Size': [115, 115, 115, 115, 115, 355]}

 df = pd.DataFrame.from_dict(data)

sns.lmplot(x = 'Day', y='Score', data = df, fit_reg=False, hue = 'Quiz', x_jitter = True, scatter_kws={'s': df.Size})
plt.show()

在此处输入图片说明

有没有办法在保持点的大小的同时获得色调?

因为当你使用它不工作hue ,seaborn做两个独立的散点图,因此尺寸参数使用的是经过scatter_kws=与数据框的内容不再一致。

但是,您可以手动重新创建相同的效果:

x_col = 'Day'
y_col = 'Score'
hue_col = 'Quiz'
size_col = 'Size'
jitter=0.2

fig, ax = plt.subplots()
for q,temp in df.groupby(hue_col):
    n = len(temp[x_col])
    x = temp[x_col]+np.random.normal(scale=0.2, size=(n,))
    ax.scatter(x,temp[y_col],s=temp[size_col], label=q)
ax.set_xlabel(x_col)
ax.set_ylabel(y_col)
ax.legend(title=hue_col)

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM