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)
情节