gpt4 book ai didi

python - 为什么在seaborn图中设置色调会改变点的大小?

转载 作者:行者123 更新时间:2023-12-01 00:02:59 25 4
gpt4 key购买 nike

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

  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()

enter image description here

设置色调几乎可以完成我需要的一切,结果就是这样。

 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()

enter image description here

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

最佳答案

它不起作用,因为当您使用 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)

enter image description here

关于python - 为什么在seaborn图中设置色调会改变点的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60200244/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com