根据限制/条件更改散点的颜色

Posted

技术标签:

【中文标题】根据限制/条件更改散点的颜色【英文标题】:Change color of scatter points depending on limits/condition 【发布时间】:2022-01-13 20:43:06 【问题描述】:

我正在从一个 excel 文件创建绘图,如使用 pandas 所示:

这是我正在使用的代码:

ax1.plot(data2["E_x"], data2["E_y"], '--', color ='black',  linewidth=2, label="Equi")
ax1.plot(data2["X"], data2["Y"], 'o', color ='black', markersize=8, label="Spinal Cord")
ax1.hlines(y=4500, xmin=0, xmax=4500, color ='black')
ax1.vlines(x=4500, ymin=0, ymax=4500, color ='black')
ax1.set_xlim([0,5000])
ax1.set_ylim([0,5000])

我想将实线 (

提前致谢!

链接到sample data。

【问题讨论】:

【参考方案1】:

如果您使用散点图(相对于没有线条的线图),您可以使用 c 关键字为每个点指定颜色列表。然后,根据您想要的任何标准,使用每个数据点的列表推导很容易生成关键字列表。

您甚至可以使用 pandas 内置的绘图功能。

所以不是这一行

ax1.plot(data2["X"], data2["Y"], 'o', color ='black', markersize=8, label="Spinal Cord")

使用

data2.plot.scatter(x = 'X', 
                   y = 'Y', 
                   c = ['r' if x else 'g' for x in (data2.X < 4500) & (data2.Y < 4500)],
                   ax = ax1
                  )

如果你愿意,你仍然可以直接使用 matplotlib

ax1.scatter(x = 'X', 
            y = 'Y', 
            c = ['r' if x else 'g' for x in (data2.X < 4500) & (data2.Y < 4500)],
            data = data2
           )

这两个都应该在边界内绘制红色,在边界外绘制绿色。

【讨论】:

感谢您的回复。这是我用来格式化图中点的最终代码: data2.plot.scatter(x = "X", y="Y", ax = ax1, c = ['b' if x else 'r'对于 x in (data2.X 【参考方案2】:

使用过滤器时,应为 x 和 y 使用相同的过滤器。这样,两者保持相同的长度。您可以使用~ 与给定过滤器相反。这是一个例子:

from matplotlib import pyplot as plt
import numpy as np

fig, ax1 = plt.subplots(figsize=(10, 5))
ax1.plot([0, 5000], [0, 5000], '--', color='black', linewidth=2, label="Equi")
x = np.random.uniform(500, 5000, 50)
y = x + np.random.normal(0, 300, len(x))
filter = (x < 4500) & (y < 4500)
ax1.plot(x[filter], y[filter], 'o', color='lime', markersize=8, label="Spinal Cord")
ax1.plot(x[~filter], y[~filter], 'o', color='crimson', markersize=8, label="Spinal Cord")
ax1.hlines(y=4500, xmin=0, xmax=4500, color='black')
ax1.vlines(x=4500, ymin=0, ymax=4500, color='black')
ax1.set_xlim([0, 5000])
ax1.set_ylim([0, 5000])

plt.tight_layout()
plt.show()

【讨论】:

以上是关于根据限制/条件更改散点的颜色的主要内容,如果未能解决你的问题,请参考以下文章

根据值更改散点图中特定点的形状

如何根据动画图中的发生时间对 3D 散点图进行颜色编码?

我们如何根据颜色标记散点图的图例

如何在反应谷歌图表中根据散点图中的某个范围值显示点颜色

Plotly:如何手动设置 plotly express 散点图中点的颜色?

R散点图:符号颜色代表重叠点的数量