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

时间:2021-04-16 23:55:31

标签: python 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)

我实在想不通是什么问题! 如何在绘图和颜色条之间匹配颜色? picture

1 个答案:

答案 0 :(得分:0)

您可能想尝试将 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。< /p>

我通常在处理各种输入时尝试传递 scalar mappable object to colorbar

相关问题