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

使用寄生轴时如何隐藏宿主轴的顶部与右侧轴脊?

嘿,刚接触Python和Stack Overflow的话,能自己查官网demo动手尝试已经超棒啦!关于你遇到的宿主轴顶部、右侧轴脊隐藏无效的问题,我刚好知道症结所在~

问题出在你用的是host_subplot创建宿主轴(也就是demo里的方式),这种基于AxesGrid的轴对象,和普通Matplotlib轴的结构不一样,直接用host.spines['right'].set_visible(False)是行不通的,得换一种方式操作轴元素:

解决步骤

  • 针对host_subplot创建的宿主轴,要通过host.axis属性来访问并设置轴脊可见性:
    # 隐藏宿主轴的顶部轴脊
    host.axis["top"].set_visible(False)
    # 隐藏宿主轴的右侧轴脊
    host.axis["right"].set_visible(False)
    
  • 如果还想顺便关掉顶部和右侧的刻度(让图表更整洁),可以加上:
    # 关闭顶部x轴刻度
    host.tick_params(axis='x', top=False)
    # 关闭右侧y轴刻度
    host.tick_params(axis='y', right=False)
    

完整示例代码

结合你参考的demo结构,给你一个可直接运行的小例子:

from mpl_toolkits.axes_grid1 import host_subplot
import matplotlib.pyplot as plt

# 创建宿主轴和寄生轴
host = host_subplot(111)
plt.subplots_adjust(right=0.75)
par1 = host.twinx()
par2 = host.twinx()

# 调整第二个寄生轴的位置(和demo一致)
offset = 60
new_fixed_axis = par2.get_grid_helper().new_fixed_axis
par2.axis["right"] = new_fixed_axis(loc="right", axes=par2, offset=(offset, 0))

# 关键:隐藏宿主轴的顶部和右侧轴脊
host.axis["top"].set_visible(False)
host.axis["right"].set_visible(False)
# 可选:关闭对应刻度
host.tick_params(axis='x', top=False)
host.tick_params(axis='y', right=False)

# 绘制示例数据
host.plot([1,2,3], [4,5,6], label='柱状图数据')
par1.scatter([1,2,3], [10,20,30], color='red', label='散点图数据1')
par2.plot([1,2,3], [100,200,300], color='green', label='其他数据')

plt.legend()
plt.show()

这样运行后,宿主轴的顶部和右侧轴脊就会被成功隐藏啦~

内容的提问来源于stack exchange,提问作者imt

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:29:44