Python子图绘图中标题与坐标轴标签重叠问题解决
解决Matplotlib子图标题与坐标轴标签重叠问题
下面提供几种实用的解决办法:
方法1:自动调整布局(最简单)
在调用plt.show()前添加plt.tight_layout(),Matplotlib会自动调整子图间距,避免元素重叠。
修改后的代码:
import numpy as np import matplotlib.pyplot as plt x=np.linspace(-np.pi,np.pi,50,endpoint=True) plt.figure() plt.subplot(211) plt.plot(x,np.sin(x),'r-') plt.title('y=sin(x)') plt.xlabel('x') plt.ylabel('y') plt.grid() plt.subplot(212) plt.plot(x,np.cos(x),'b-') plt.title('y=cos(x)') plt.xlabel('x') plt.ylabel('y') plt.grid() # 自动调整布局 plt.tight_layout() plt.show()
方法2:手动设置子图垂直间距
使用plt.subplots_adjust()手动设置垂直方向的子图间距(hspace参数),数值越大间距越宽,可根据需求调整。
示例代码:
import numpy as np import matplotlib.pyplot as plt x=np.linspace(-np.pi,np.pi,50,endpoint=True) plt.figure() plt.subplot(211) plt.plot(x,np.sin(x),'r-') plt.title('y=sin(x)') plt.xlabel('x') plt.ylabel('y') plt.grid() plt.subplot(212) plt.plot(x,np.cos(x),'b-') plt.title('y=cos(x)') plt.xlabel('x') plt.ylabel('y') plt.grid() # 手动设置垂直间距,这里设为0.5,可按需调整 plt.subplots_adjust(hspace=0.5) plt.show()
方法3:使用面向对象式绘图(更灵活)
Matplotlib的面向对象API能更精细地控制绘图元素,同样可以结合tight_layout()解决重叠问题:
import numpy as np import matplotlib.pyplot as plt x=np.linspace(-np.pi,np.pi,50,endpoint=True) # 创建2行1列的子图布局 fig, (ax1, ax2) = plt.subplots(2, 1) ax1.plot(x, np.sin(x), 'r-') ax1.set_title('y=sin(x)') ax1.set_xlabel('x') ax1.set_ylabel('y') ax1.grid() ax2.plot(x, np.cos(x), 'b-') ax2.set_title('y=cos(x)') ax2.set_xlabel('x') ax2.set_ylabel('y') ax2.grid() # 自动调整布局 fig.tight_layout() plt.show()
内容的提问来源于stack exchange,提问作者Ongky Denny Wijaya
相关产品推荐
相关产品推荐

