matplotlib colorbar for scatter

Ada*_*all 74 python colors matplotlib

我正在处理具有3个绘图参数的数据: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()
Run Code Online (Sandbox Code Playgroud)

但结果是 TypeError: You must first set_array for mappable

mat*_*att 176

来自散点1的matplotlib文档:

仅当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()
Run Code Online (Sandbox Code Playgroud)

图像示例


neu*_*ite 5

这是添加颜色条的OOP方法

fig, ax = plt.subplots()
im = ax.scatter(x, y, c=c)
fig.colorbar(im, ax=ax)
Run Code Online (Sandbox Code Playgroud)