我正在尝试生成坐标(x,y)的散点图,其中颜色由介于(-3,1.5)之间的值决定。如何绘制所有值小于-1且颜色相同的点,而不将它们一起从图中省略。我尝试使用im.set_clim(-1,1.5)
,但它截断了-1以下的值,并且没有绘制。
我该怎么做?
后续问题:
是否有可能具有顺序颜色图,其中低于-1的值都为红色(无渐变),而值-1以上的值具有不以红色阴影开头的顺序色图。
答案 0 :(得分:2)
vmin
和vmax
指示哪个c值对应于颜色图的最低和最高颜色。默认情况下,所有低于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()