matplotlib 多个散点图的颜色范围相同

ldioqlga  于 2022-11-15  发布在  其他
关注(0)|答案(1)|浏览(227)

在绘制多个散点图时,我希望新绘制点的颜色与相同的颜色条一致。我有一个基本图(颜色存储在y数组中):

im = ax.scatter(embs[:,0],
           embs[:,1],
           edgecolor='k',
           linewidth=0.2,
           c=y
           )

现在,我想通过绘制红色轮廓来高亮显示特定点(我高亮显示右上方的黄色点):

ax.scatter(embs[5715][0],
            embs[5715][1],
            edgecolor='red',
            linewidth=0.3,
            c=y[5715]
            )

问题是它现在的颜色与原来的颜色不一致:

h6my8fg2

h6my8fg21#

解决此问题的一个简单方法是将第一个scatter调用返回的对象的norm作为第二个调用的norm传递。
这可确保第二个散点图遵守第一个散点图所用的数据范围
例如:

import matplotlib.pyplot as plt
import numpy as np

x, y = np.random.normal(size=(2, 1000))
c = x ** 2 + y ** 2

cb = plt.scatter(x, y, c=c, ec="k")
plt.scatter(x[777], y[777], c=c[777], ec="r", norm=cb.norm)

plt.colorbar(cb)

plt.show()

这将给予例如

相关问题