我有一个带有颜色条的 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
答案 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_val
和 max_val
用于缩放颜色 - 它们应该与您传递给分散的内容相匹配,因此请尝试 min_val = data['river1'].min
和类似的 max_val
。< /p>
我通常在处理各种输入时尝试传递 scalar mappable object to colorbar。