Python matplotlib散点颜色条

Python matplotlib散点颜色条,python,colors,matplotlib,Python,Colors,Matplotlib,我使用的数据有三个绘图参数:x,y,c。如何为散点图创建自定义颜色值 扩展我正在尝试做的: import matplotlib import matplotlib.pyplot as plt cm = matplotlib.cm.get_cmap('RdYlBu') colors=[cm(1.*i/20) for i in range(20)] xy = range(20) plt.subplot(111) colorlist=[colors[x/2] for x in xy] #actuall

我使用的数据有三个绘图参数:x,y,c。如何为散点图创建自定义颜色值

扩展我正在尝试做的:

import matplotlib
import matplotlib.pyplot as plt
cm = matplotlib.cm.get_cmap('RdYlBu')
colors=[cm(1.*i/20) for i in range(20)]
xy = range(20)
plt.subplot(111)
colorlist=[colors[x/2] for x in xy] #actually some other non-linear relationship
plt.scatter(xy, xy, c=colorlist, s=35, vmin=0, vmax=20)
plt.colorbar()
plt.show()

但是结果是
TypeError:您必须首先从散点上的matplotlib文档中为可映射的

设置\u数组:

仅当c是浮点数组时才使用cmap

所以colorlist需要是一个浮点数列表,而不是现在的元组列表。 plt.colorbar()需要一个可映射的对象,如plt.scatter()返回的CircleCollection。 然后,vmin和vmax可以控制颜色条的限制。vmin/vmax之外的事物获取端点的颜色

这对你有什么作用

import matplotlib.pyplot as plt
cm = plt.cm.get_cmap('RdYlBu')
xy = range(20)
z = xy
sc = plt.scatter(xy, xy, c=z, vmin=0, vmax=20, s=35, cmap=cm)
plt.colorbar(sc)
plt.show()

如果您希望通过两个变量分散,通过第三个变量分散颜色,这是一个不错的选择

创建数据集 牵牛星图

from altair import *
Chart(df).mark_circle().encode(x='A',y='B', color='C').configure_cell(width=200, height=150)
情节

以下是添加颜色条的示例:

fig, ax = plt.subplots()
im = ax.scatter(x, y, c=c)
fig.colorbar(im, ax=ax)

我试过了,得到了
“AxesSubplot”对象没有属性“colorbar”
。我已经完成了ax.colorbar()
。。。我做错了什么?这个例子在使用matplotlib OOP接口时没有提供一个清晰的应用程序:当我这样做时,我最终会完全重新缩放绘图,使所有的点都在最右边的一小段绘图范围内,并且颜色条在底部是一条非常细的线。正确的答案是,我认为,直接使用
plt
绘制色条不是推荐的方法。你的方式很好。
fig, ax = plt.subplots()
im = ax.scatter(x, y, c=c)
fig.colorbar(im, ax=ax)