使用寄生轴时如何隐藏宿主轴的顶部与右侧轴脊?
嘿,刚接触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
相关产品推荐
相关产品推荐

