我是matplotlib的新手,今天我想问一下我目前的问题。 请看我的代码:
x = [1,2,3,4,5,6,7,8,9,10]
y = [1,2,3,4,5,6,7,8,9,10]
colors = [0,1,1,0,1,4,1,3,2,4]
sizes = [500,500,300,300,300,500,500,300,300,300]
map1 = plt.cm.get_cmap("jet", 5)
plt.scatter(x[0:3], y[0:3], c=colors[0:3] ,s=sizes[0:3],marker="*",cmap=map1)
plt.scatter(x[3:6], y[3:6], c=colors[3:6] ,s=sizes[3:6],marker="<",cmap=map1)
plt.scatter(x[6:10], y[6:10], c=colors[6:10], s=sizes[6:10],marker="D",cmap=map1)
plt.colorbar(ticks=range(5))
plt.clim(-0.5, 4.5)
plt.show()
问题是我无法通过多个标记和多种颜色获得结果。如你所见,我有一个包含10个项目的测试数据集,我想显示1st - &gt;带标记*的第3项,颜色与颜色阵列兼容(第1项为0色,第2项为1色)... 与结果图像一样,只有plt.scatter的最后颜色才为真。 我不明白我错在哪里。 请给我一些解决方案。 非常感谢你
答案 0 :(得分:1)
您需要对所有散点图使用相同的颜色标准化。这种标准化需要跨越整个可能的颜色值范围。否则,第一个散布不知道第二个散射范围等。
import matplotlib.pyplot as plt
x = [1,2,3,4,5,6,7,8,9,10]
y = [1,2,3,4,5,6,7,8,9,10]
colors = [0,1,1,0,1,4,1,3,2,4]
sizes = [500,500,300,300,300,500,500,300,300,300]
map1 = plt.cm.get_cmap("jet", 5)
norm = plt.Normalize(min(colors),max(colors))
kw = dict(cmap=map1, norm=norm)
plt.scatter(x[0:3], y[0:3], c=colors[0:3] ,s=sizes[0:3],marker="*",**kw)
plt.scatter(x[3:6], y[3:6], c=colors[3:6] ,s=sizes[3:6],marker="<",**kw)
plt.scatter(x[6:10], y[6:10], c=colors[6:10], s=sizes[6:10],marker="D",**kw)
plt.colorbar(ticks=range(5))
plt.clim(-0.5, 4.5)
plt.show()