You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

matplotlib imshow绘图如何移除色条双刻度仅保留单组刻度

问题原因

色条双侧显示刻度、效果杂乱是两个代码疏漏导致的:

  1. 你通过make_axes_locatable手动创建了色条挂载轴cax,但调用fig.colorbar()时没有传入cax参数指定绑定的轴,matplotlib会自动生成新的色条轴,和手动创建的轴位置重叠,相当于两个轴的刻度叠在一起显示。
  2. 未指定色条刻度的显示位置,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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 18:54:25