我正在尝试在单个散点图上绘制多对数据,每个散点图由不同的第三个变量数组着色。着色似乎适用于第一个图,然后第二个和第三个图失败。
任何帮助将不胜感激
import matplotlib.pyplot as plt
jet=plt.get_cmap('jet')
x = [1,2,3,4]
y = [1,2,3,4]
z = [1,1,1,1]
a = [2,3,4,5]
b = [1,2,3,4]
c = [2,2,2,2]
d = [3,4,5,6]
e = [1,2,3,4]
f = [3,3,3,3]
plt.scatter(x, y, s=100, c=z, cmap=jet)
plt.scatter(a, b, s=100, c=c, cmap=jet)
plt.scatter(d, e, s=100, c=f, cmap=jet)
plt.clim(0,5)
plt.colorbar()
plt.show()
答案 0 :(得分:2)
我删除了plt.clim(0,5)行,并为所有绘图添加了最小值和最大值,这似乎有效。
import matplotlib.pyplot as plt
jet=plt.get_cmap('jet')
x = [1,2,3,4]
y = [1,2,3,4]
z = [1,1,1,1]
a = [2,3,4,5]
b = [1,2,3,4]
c = [2,2,2,2]
d = [3,4,5,6]
e = [1,2,3,4]
f = [3,3,3,3]
plt.scatter(x, y, s=100, c=z, vmin=1, vmax=5, cmap=jet)
plt.scatter(a, b, s=100, c=c, vmin=1, vmax=5, cmap=jet)
plt.scatter(d, e, s=100, c=f, vmin=1, vmax=5, cmap=jet)
plt.colorbar()
plt.show()
答案 1 :(得分:2)
问题是您的色彩映射正在为每个绘图命令重新规范化。也。作为一种风格问题,jet
基本上不是正确使用的色彩映射。所以试试这个:
import matplotlib.pyplot as plt
jet=plt.get_cmap('coolwarm')
x = [1,2,3,4]
y = [1,2,3,4]
z = [1,1,1,1]
a = [2,3,4,5]
b = [1,2,3,4]
c = [2,2,2,2]
d = [3,4,5,6]
e = [1,2,3,4]
f = [3,3,3,3]
plt.scatter(x, y, s=100, c=z, cmap=jet, vmin=0, vmax=4)
plt.scatter(a, b, s=100, c=c, cmap=jet, vmin=0, vmax=4)
plt.scatter(d, e, s=100, c=f, cmap=jet, vmin=0, vmax=4)
plt.clim(0,5)
plt.colorbar()
plt.show()
制作一个好的情节: