matplotlib颜色条分散

我正在处理的数据有3个绘图参数:x,y,c。 如何为散点图创build自定义颜色值?

扩展这个例子,我试图做的:

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: You must first set_array for mappable

从matplotlib文档分散1 :

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

图像示例

如果你想分散两个variables和颜色的三分之一, Altair可以是一个很好的select。

创build数据集

 import matplotlib.pyplot as plt import numpy as np import pandas as pd df = pd.DataFrame(40*np.random.randn(10, 3), columns=['A', 'B','C']) 

Altair阴谋

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

情节

在这里输入图像说明