使用matplotlib的plt而非ax对象时,如何控制colorbar的高度?
使用plt接口控制colorbar高度的方法
不用大幅修改原有代码,核心是通过plt.gca()获取当前图像的轴对象,再结合参数或手动定位调整colorbar高度,以下两种实用方法:
方法1:通过fraction参数匹配图像比例
直接在colorbar()中传入fraction参数,结合图像高宽比控制高度,改动最小:
import numpy as np import matplotlib.pyplot as plt a = np.random.random((10, 20)) plt.imshow(a, cmap='gray') # 获取当前轴,计算图像高宽比 ax = plt.gca() im_ratio = a.shape[0]/a.shape[1] # 用fraction控制colorbar相对高度,pad控制与图像的间距 plt.colorbar(fraction=0.047*im_ratio, pad=0.04) plt.show()
fraction=0.047*im_ratio:0.047是默认fraction值,乘以图像高宽比后,colorbar高度会匹配图像;如果想让colorbar更短/更长,直接调整系数即可(比如0.047*im_ratio*0.8就是80%高度)pad参数控制colorbar与图像的间距,按需调整数值。
方法2:手动设置colorbar位置(精确控制)
如果需要更精准的高度控制,可手动指定colorbar的位置坐标:
import numpy as np import matplotlib.pyplot as plt a = np.random.random((10, 20)) plt.imshow(a, cmap='gray') ax = plt.gca() # 获取当前图像轴的位置(归一化坐标,范围0-1) pos = ax.get_position() # 定义colorbar的位置:[左边界, 下边界, 宽度, 高度] # 这里把高度设为原图像高度的80%,可自行修改最后一个参数 cbar_pos = [pos.x1 + 0.01, pos.y0, 0.02, pos.height * 0.8] # 添加colorbar轴并绑定colorbar plt.colorbar(cax=plt.gcf().add_axes(cbar_pos)) plt.show()
pos.height * 0.8:将colorbar高度设为原图像轴高度的80%,改成1就是和图像等高,小于1则更短pos.x1 + 0.01控制colorbar与图像的水平间距,0.02是colorbar的宽度,都可按需调整。
内容的提问来源于stack exchange,提问作者Firestar-Reimu
相关产品推荐
相关产品推荐

