我在Python工作,在绘制内容方面是一个初学者。在另一篇文章(matplotlib Plot multiple scatter plots, each colored by different thrid variable)
中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()
我发现了这段代码,它实际上已经很适合我的目的了。它会生成3个不同颜色的散点图:
我现在想要更改代码,以便能够占用10个不同的图而不是3个,所有图都有不同的颜色,但我并不真正理解代码。有人可以解释分散命令的不同部分(以及plt.clim())。我在网上搜索但是这一切都非常混乱。我还发现了一些叫做YIGnBu的更好的颜色,但该程序并不接受它。
也许有人可以为我揭开这一点。提前谢谢!
答案 0 :(得分:1)
首先,阅读scatter documentation会有所帮助。这不是混乱的,并解释了scatter
签名的每一部分。
其次,matplotlib页面上有一些例子,例如:
可能更适合作为资源。
通常,散点图的概念是散射的不同点可以具有不同的大小(由s
参数确定)和颜色(由c
确定)。
因此,您显示的示例代码不是一个很好的示例,因为它使用三个不同的散点图,其中只需要一个绘图
import matplotlib.pyplot as plt
x = [1,2,3,4, 2,3,4,5, 3,4,5,6]
y = [1,2,3,4, 1,2,3,4, 1,2,3,4]
z = [1,1,1,1, 2,2,2,2, 3,3,3,3]
plt.scatter(x, y, s=100, c=z, cmap='YlGnBu')
plt.colorbar()
plt.show()
要制作10个不同的地块,您可以使用普通的plot
:
import matplotlib.pyplot as plt
import numpy as np
x = np.arange(1,5)
y = np.arange(1,5)
for i in range(10):
plt.plot(x+i, y, ls="", marker="o", ms=10, color=plt.cm.YlGnBu(i/9.) )
plt.show()
然而,添加颜色条时,最后一种方法会变得有点复杂,因为绘图本身不是ScalarMappable本身。因此,需要手动为colorbar创建ScalarMappable。
import matplotlib.pyplot as plt
import matplotlib.colors as colors
import numpy as np
x = np.arange(1,5)
y = np.arange(1,5)
for i in range(10):
plt.plot(x+i, y, ls="", marker="o", ms=10, color=plt.cm.YlGnBu(i/9.) )
sm = plt.cm.ScalarMappable(cmap="YlGnBu", norm=colors.Normalize(vmin=0, vmax=9))
sm.set_array([])
plt.colorbar(sm)
plt.show()