【问题标题】:cmap.set_under() and cmap.set_over() not appearing in colorbarcmap.set_under() 和 cmap.set_over() 没有出现在颜色栏中
【发布时间】:2020-11-03 05:31:33
【问题描述】:

我正在尝试绘制一个彩条,我尝试使用 cmap.set_under()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')

提前谢谢你

【问题讨论】:

  • 你试过fig.colorbar(..., extend='both')吗?见docs
  • 嗯,成功了。扩展有什么作用?您也可以用此评论回答问题,我会将其标记为正确

标签: python matplotlib networkx osmnx


【解决方案1】:

fig.colorbar(..., extend='both') 在颜色条的顶部和底部添加小三角形箭头,以指示 overunder 颜色。而不是“both”,其他选项是“min”和“max”,默认为“neither”。有关详细信息,请参阅docs

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

【讨论】:

  • 如果我不写参数,那么三角形上的颜色是相同的。至少这是我得到的
猜你喜欢
  • 2018-10-04
  • 2016-09-23
  • 1970-01-01
  • 2014-02-28
  • 1970-01-01
  • 1970-01-01
  • 2016-03-19
  • 2014-08-03
  • 1970-01-01
相关资源
最近更新 更多