了解彩色散点图的Pyplot代码

时间:2017-05-23 10:00:42

标签: python matplotlib plot colors scatter-plot

我在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个不同颜色的散点图:enter image description here

我现在想要更改代码,以便能够占用10个不同的图而不是3个,所有图都有不同的颜色,但我并不真正理解代码。有人可以解释分散命令的不同部分(以及plt.clim())。我在网上搜索但是这一切都非常混乱。我还发现了一些叫做YIGnBu的更好的颜色,但该程序并不接受它。

也许有人可以为我揭开这一点。提前谢谢!

1 个答案:

答案 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()

enter image description here

要制作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()

enter image description here

然而,添加颜色条时,最后一种方法会变得有点复杂,因为绘图本身不是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()

enter image description here