matplotlib imshow绘图如何移除色条双刻度仅保留单组刻度
问题原因
色条双侧显示刻度、效果杂乱是两个代码疏漏导致的:
- 你通过
make_axes_locatable手动创建了色条挂载轴cax,但调用fig.colorbar()时没有传入cax参数指定绑定的轴,matplotlib会自动生成新的色条轴,和手动创建的轴位置重叠,相当于两个轴的刻度叠在一起显示。 - 未指定色条刻度的显示位置,matplotlib默认会在色条轴的左右两侧同时渲染刻度标签。
修正方法
只需要做两处调整:
- 每个
fig.colorbar()调用时传入对应的cax参数,绑定提前创建好的色条轴,避免轴重叠 - 给每个色条设置属性,隐藏左侧的刻度标签,仅保留右侧标签
修正后的完整可运行代码:
import numpy as np import pandas as pd import matplotlib.pyplot as plt from mpl_toolkits.axes_grid1 import make_axes_locatable plt.rcParams["axes.grid"] = False import seaborn as sns a = np.random.random((8, 8)) data = pd.DataFrame([[a],[a],[a],[a]]) fig, [[ax1, ax2], [ax3, ax4]] = plt.subplots(nrows=2, ncols=2, figsize = (14,12) ) fig.suptitle('my title', fontsize=20) # 第一个子图及色条 im1 = ax1.imshow(data[0][0], cmap='plasma', origin='lower', interpolation='nearest', rasterized=True) divider1 = make_axes_locatable(ax1) cax1 = divider1.append_axes("right", size="20%", pad=0.01) cbar1 = fig.colorbar(im1, cax=cax1) cbar1.ax.yaxis.set_tick_params(labelleft=False) # 第二个子图及色条 im2 = ax2.imshow(data[0][1], cmap='plasma', origin='lower', interpolation='nearest', rasterized=True) divider2 = make_axes_locatable(ax2) cax2 = divider2.append_axes("right", size="20%", pad=0.01) cbar2 = fig.colorbar(im2, cax=cax2) cbar2.ax.yaxis.set_tick_params(labelleft=False) # 第三个子图及色条 im3 = ax3.imshow(data[0][2], cmap='plasma', origin='lower', interpolation='nearest', rasterized=True) divider3 = make_axes_locatable(ax3) cax3 = divider3.append_axes("right", size="20%", pad=0.01) cbar3 = fig.colorbar(im3, cax=cax3) cbar3.ax.yaxis.set_tick_params(labelleft=False) # 第四个子图及色条 im4 = ax4.imshow(data[0][3], cmap='plasma', origin='lower', interpolation='nearest', rasterized=True) divider4 = make_axes_locatable(ax4) cax4 = divider4.append_axes("right", size="20%", pad=0.01) cbar4 = fig.colorbar(im4, cax=cax4) cbar4.ax.yaxis.set_tick_params(labelleft=False) # 调整布局避免总标题和子图重叠 fig.subplots_adjust(top=0.93) plt.show()
可选优化
如果四个子图使用的色条数值范围完全一致,还可以只保留1-2个色条,或者统一所有色条的刻度范围,进一步让图面更整洁。
内容的提问来源于stack exchange,提问作者dcpetit
相关产品推荐
相关产品推荐

