簡體   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