Python 理解彩色散点图的Pyplot代码

Python 理解彩色散点图的Pyplot代码,python,matplotlib,plot,colors,scatter-plot,Python,Matplotlib,Plot,Colors,Scatter Plot,我在Python中工作,是一个完全的绘图新手。在另一个岗位上 我已经找到了这段代码,它实际上已经非常适合我的目的了。它生成3个不同颜色的散点图: 我现在想修改代码,使其能够处理10个不同的绘图,而不是3个,所有的绘图都有不同的颜色,但我并不真正理解代码。有人能解释一下scatter命令的不同部分是做什么的吗?还有plt.clim。我在网上搜索过,但都很混乱。我还发现了一些更好的颜色,叫做YIGnBu,但程序不接受 也许有人能帮我解释一下。提前谢谢 首先,它有助于阅读文章。这并不是混乱的,它解释了

我在Python中工作,是一个完全的绘图新手。在另一个岗位上

我已经找到了这段代码,它实际上已经非常适合我的目的了。它生成3个不同颜色的散点图:

我现在想修改代码,使其能够处理10个不同的绘图,而不是3个,所有的绘图都有不同的颜色,但我并不真正理解代码。有人能解释一下scatter命令的不同部分是做什么的吗?还有plt.clim。我在网上搜索过,但都很混乱。我还发现了一些更好的颜色,叫做YIGnBu,但程序不接受


也许有人能帮我解释一下。提前谢谢

首先,它有助于阅读文章。这并不是混乱的,它解释了散射特征的每一部分

其次,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个不同的绘图,您可以同样使用法线:

然而,最后一种方法在添加颜色条时会变得稍微复杂一些,因为绘图本身不是可缩放的。因此,Once需要手动为colorbar创建ScalarMapable

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

让我们分解scatterx命令:plt.scatterx,y,s=100,c=z,cmap=jet,vmin=0,vmax=4。当然,x,y是你的点。s=100是符号的大小。c=z是要使用的颜色。请注意,这可能只是一个标量,甚至是一个名称c='red'。cmap=jet设置要使用的颜色映射,以便将数字映射到颜色。vmin,vmax设置颜色范围的上限和下限。plt.clim正在设置颜色条的限制-在这种情况下,该限制为0到4个数据限制,但强制为0到5。希望有帮助@VBB请不要提供答案作为评论。使用下面的答案字段提供答案。关于颜色映射,它被称为YlGnBu,而不是YIGnBu。@ImportanceOfBeingErnest-注意。我不想提供示例代码,但也不想说RTFM。。。我觉得回答这个问题太过分了。@VBB谢谢,这让我明白了很多!谢谢!你能解释一下我如何把YlGnBu换成其他颜色吗?最亮的颜色在我的显示器上看不到,我需要其他颜色。您是否可以推荐一款能够清晰辨别不同颜色且也能被看到的颜色?您可以参考并选择最适合的颜色图。我不能推荐任何东西,因为我不知道想要的应用程序。啊,好的,谢谢,它现在可以工作了。最后一个问题:我使用了你的第二种方法,使用plt.plot。在这种情况下,有没有一种方法可以同时显示颜色条?当我在散点图示例中使用colobar时,程序会给我一个错误。我用包含colobar的解决方案更新了答案。
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()
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()