低于阈值的值具有相同颜色的散点图

Scatter plot with same color for values below a threshold

我正在尝试生成坐标 (x,y) 的散点图,其中颜色由介于 (-3,1.5) 之间的值决定。如何用相同的颜色绘制所有值小于 -1 的点,而不将它们一起从图中省略。我尝试使用 im.set_clim(-1,1.5) ,但它截断了低于 -1 的值并且没有绘制。

我该怎么做?

后续问题:

是否可以有顺序颜色图,其中低于 -1 的值都是红色(无渐变)和高于 -1 的顺序颜色图不以红色阴影开头。

vminvmax表示哪个c-value对应的是色图的最低颜色和最高颜色。默认情况下,所有低于 vmin 的值都会获得最低颜色('viridis' 地图为深紫色)。您可以使用 cmap.set_under(...) 更改此颜色。 extend= 参数在颜色栏中将底色显示为三角形箭头。

from matplotlib import pyplot as plt
import numpy as np

x = np.linspace(0, 15, 50)
y = - np.sin(x) / (x + 1) * 8
num_colors = 10
cmap = plt.get_cmap('viridis', num_colors)
cmap.set_under('red')
plt.scatter(x, y, c=y, cmap=cmap, vmin=-1, vmax=1.5)
plt.colorbar(extend='min')
plt.show()