了解彩色散点图的 Pyplot 代码
Understanding Pyplot code for coloured scatter plots
我在 Python 工作,在策划方面完全是个初学者。在另一个 post ()
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,但是程序不接受它。
也许有人可以为我阐明这一点。提前致谢!
首先它有助于阅读 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 本身。因此Once需要手动为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([]) # only needed for matplotlib < 3.1
plt.colorbar(sm)
plt.show()
我在 Python 工作,在策划方面完全是个初学者。在另一个 post (
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,但是程序不接受它。
也许有人可以为我阐明这一点。提前致谢!
首先它有助于阅读 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 本身。因此Once需要手动为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([]) # only needed for matplotlib < 3.1
plt.colorbar(sm)
plt.show()