首页 > 解决方案 > cmap.set_under() 和 cmap.set_over() 没有出现在颜色栏中

问题描述

我正在尝试绘制一个颜色条,我尝试使用cmap.set_under()and cmap.set_over(),但是它们没有出现在图上,有人可以帮我吗?

这是代码:

city = 'Portugal, Lisbon'
G = ox.graph_from_place(city, network_type='drive', simplify=True)

G_nx = nx.relabel.convert_node_labels_to_integers(G)

nc =[whatever you would like]
ns=[whatever you would like]

cmap = copy(plt.cm.get_cmap('inferno_r'))
cmap.set_over((0.001462, 0.000466, 0.013866, 1.0))
cmap.set_under((0.988362, 0.998364, 0.644924, 1.0))
norm=plt.Normalize(vmin=0.8, vmax=1.5)
sm = mpl.cm.ScalarMappable(norm=norm, cmap=cmap)
sm.set_array([])

fg_color = 'black'
fig, ax = ox.plot.plot_graph(G_nx, node_color=nc, node_size=ns, edge_linewidth=0.8, figsize = (80,40), show=False, bgcolor = 'white')
cb = fig.colorbar(cm.ScalarMappable(norm=norm, cmap=cmap), ax=ax, orientation='vertical', aspect=50, shrink=0.8)
cb.set_label('r', fontsize = 60, color = fg_color, rotation = 'horizontal')
cb.ax.tick_params(labelsize=40, color = fg_color)
# set colorbar tick color
cb.ax.yaxis.set_tick_params(color=fg_color)


cb.outline.set_edgecolor(fg_color)
cb.cmap.set_over('k')


plt.setp(plt.getp(cb.ax.axes, 'yticklabels'), color=fg_color)

fig.set_frameon(True)
fig.savefig('dhgdhg.png', facecolor=fig.get_facecolor(), bbox_inches='tight')

先感谢您

标签: pythonmatplotlibnetworkxosmnx

解决方案


fig.colorbar(..., extend='both')在颜色条的顶部和底部添加小三角形箭头,以指示颜色上色和色。除了“both”,其他选项是“min”和“max”,默认为“neither”。有关更多信息,请参阅文档

请注意,默认下颜色等于颜色图的最低颜色(类似于默认上颜色)。如果这些是所需的值,则不需要明确设置它们。


推荐阅读