我试图做的情节需要实现三件事。
如果在同一天以相同的分数进行测验,则该点必须更大。
如果两个测验分数重叠,则必须有一些抖动,这样我们才能看到所有分数。
每个测验需要有自己的颜色
这就是我要怎么做。
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=
传递的size参数不再与数据框的内容对齐。
您可以手动重新创建相同的效果:
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)
关于python - 为什么在海洋情节中设置色调会改变点的大小?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60200244/