Matplotlib:散点和颜色条颜色不匹配



我有一个带颜色栏的matplotlib绘图,我不知道如何匹配绘图和颜色栏的颜色。

data = pd.read_csv('data ocean.csv', delimiter=';')
fig = plt.figure(figsize=(23, 7))
#fig, ax = plt.subplots()
m = Basemap(width=1500000,height=1000000, projection='stere',lat_ts=73,lat_0=73,lon_0=127, 
resolution='l')
m.drawcoastlines()
m.drawmapboundary()#fill_color='Blue')
m.fillcontinents(color='red')
# draw parallels and meridians.
m.drawparallels(np.arange(60.,80.,5.))
m.drawmeridians(np.arange(0.,180.,10.))
#m.drawmapboundary(fill_color='Blues')
cmap = plt.cm.get_cmap(('Dark2_r'), len(data['river1']))
x, y = m(np.array(data['Long1']), np.array(data['Lat1']))
pic=plt.scatter(x,y, marker='o',vmin=0, vmax=1, s=50, c = data['river1'].map(cmap),)
plt.title('доля речных вод, 2015 ',fontsize='15')
plt.colorbar(pic)
plt.show()
plt.draw()
fig.savefig('1.png', dpi=fig.dpi)

我真的搞不清楚问题出在哪里!如何在绘图和颜色栏之间匹配颜色?图片

您可能需要尝试将plt.colorbar(pic)行替换为:

norm = plt.Normalize(min_val, max_val)
sm = plt.cm.ScalarMappable(norm=norm, cmap=cmap)
cbar = fig.colorbar(sm, ax=None, orientation='vertical') 

其中min_valmax_val用于缩放颜色-它们应该与您传递给散射的颜色相匹配,所以尝试min_val = data['river1'].min和类似的max_val

当我处理各种输入时,我通常会尝试将标量可映射对象传递到colorbar。

最新更新