繁体   English   中英

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

[英]Matplotlib:scatter and colorbar color don't match

I have a matplotlib plot with a color bar and I cannot figure out how to match the colors of the plot and the color bar.

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)

我真的无法弄清楚问题是什么? 如何在 plot 和彩条之间匹配 colors? 图片

您可能想尝试将您的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用于缩放颜色 - 它们应该与您传递给 scatter 的内容相匹配,因此请尝试min_val = data['river1'].min和类似的max_val

当我处理各种输入时,我通常会尝试将标量可映射 object传递给彩条。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM