我在python上使用'tab20'颜色图在matplotlib上绘制以下代码:

colors=[str(float(year-1980)/(2017-1980)) for i in years];
fig,ax = plt.subplots()
ax.scatter(Topic[:,0],Topic[:,1],c=colors,cmap='tab20')


但是我得到的情节是完全灰色的。可能是什么原因?

python - Matplotlib cmap仅显示灰色-LMLPHP

最佳答案

通过在您的c调用中将字符串列表传递给ax.scatter,您可以告诉matplotlib将它们视为颜色格式字符串。由于字符串看起来像代表浮点数,因此将其视为灰度值。如果传递的是浮动列表,则它应正确使用颜色表:

colors = [float((year-1980)/(2017-1980)) for year in years]

有关更多详细信息,请参见the docs,尤其是:


  cmap:颜色图,可选,默认:无
  
  Colormap实例或注册名称。仅当cmap
  浮点数数组。


(此外,第一行后不需要c。)

10-06 01:43