Seaborn 散点图 X 和 Y 的颜色

Posted

技术标签:

【中文标题】Seaborn 散点图 X 和 Y 的颜色【英文标题】:Seaborn Scatterplot Color by X and Y 【发布时间】:2020-10-10 03:44:44 【问题描述】:

我在为应该是一个简单的散点图着色时遇到问题。我在我的熊猫数据框中绘制了两个比较列,但我想通过 X 散点图和 Y 散点图为散点图着色。所以 X 散射是红色的,Y 散射是黑色的。

这是我到目前为止所做的工作的简要介绍。这是 sns.lmplot,但我也尝试过 sns.scatterplot。

fig, ax = plt.subplots(figsize=(10, 5))

x=df_layer10s2['xco2'].values
y=df_layer10s2['xco2_part'].values
col = (if x then 'r', else 'black')
ax= sns.lmplot(x='xco2',y='xco2_part',data=df_layer10s2)
# plt.ylim(389,404)
# plt.xlim(389,404)

这里还有一张我的数据框是如何设置的图片:

【问题讨论】:

您正在绘制 y 与 x .. “X 散射将是红色,Y 散射将是黑色”是什么意思?您需要第三个变量来提供颜色吗? 对,但我基本上只想知道每个散点图的来源。就像红色散点图是代表 XCO2 的 X 值,黑色是代表 XCO_part 的 Y 值。我不确定这是否有意义。我不想涉及第三个变量,我只想显示两列之间的比较。 【参考方案1】:

我认为您混淆了lmplot 的参数。此外,您可以改用regplot,因为您没有使用使lmplotregplot 不同的功能。无论如何,您似乎应该将 'time' 列用作 x 值,将 'xco2''xco2_part' 用作 y 值。在这种情况下,您可以进行两次绘图调用并设置您的 color 参数。所以是这样的:

sns.regplot(x='time', y='xco2', data=df_layer10s2, color='r')
sns.regplot(x='time', y='xco2_part', data=df_layer10s2, color='k')

这是一个例子:

np.random.seed(42)
time = np.random.random(50)
y0 = np.random.random(50)
y1 = np.random.random(50)
df = pd.DataFrame('time': time, 'y0': y0, 'y1': y1)

sns.regplot(x='time', y='y0', data=df, color='r')
sns.regplot(x='time', y='y1', data=df, color='k')

【讨论】:

我已经有这样的情节了。我想要做的主要事情是能够分辨出哪个散射点来自哪个模型(XCO2 或 XCO2 部分。)如果我可以将散射的标记形状更改为他们的哪个模型会更好来自。我认为我的问题不清楚。 我对你想要什么感到困惑。不同的颜色会告诉您数据点的来源:xco2 为红色,xco2 部分为黑色(例如),这也是我理解您最初的问题的原因。您希望现在有不同的标记吗?

以上是关于Seaborn 散点图 X 和 Y 的颜色的主要内容,如果未能解决你的问题,请参考以下文章

使用 Seaborn 抛光散点图图例

如何删除图例的特定部分(seaborn,散点图)

用seaborn绘制散点图

如何在 pandas DataFrame 中选择具有 MultiIndex 的列(用于 seaborn 散点图)?

如何用matlab 画散点图 如何标记数据点的颜色

将 Matplotlib/Seaborn 散点图变形为平行四边形