如何在matplotlib中设置轴和标签之间的空间

时间:2021-04-25 12:02:22

标签: python numpy matplotlib data-visualization

我的代码:

path="M14 16a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12zM5.904 5.197 10 9.293V6.525a.5.5 0 0 1 1 0V10.5a.5.5 0 0 1-.5.5H6.525a.5.5 0 0 1 0-1h2.768L5.197 5.904a.5.5 0 0 1 .707-.707z"

上面的代码给出:

enter image description here

我的问题:

因此,如您所见,ylabel 'Y' 与 y 轴接触,并且 xlabel 'X' 和 x 轴之间存在空间

如何设置轴和标签之间的空间(就像 xlabel 和 x 轴之间有一个空间)?

我的尝试:

在上面的代码中,我注释了 #importing required libraries import numpy as np from matplotlib.patches import Polygon import matplotlib.pyplot as plt #plotting data def func(x): return (x-3)*(x+2)*(3*x+5)+25 a,b=2,9 x=np.linspace(0,10,30) y=func(x) fig,ax=plt.subplots(1,1,dpi=135) ax.plot(x,y,linewidth=2.5,color='c') ix=np.linspace(a,b) iy=func(ix) verts=[(a,0),*zip(ix,iy),(b,0)] poly=Polygon(verts,facecolor='0.7',edgecolor='0.9') ax.add_patch(poly) ax.set_ylim(bottom=0) ax.text(6.5,150,r'$\int_a^b f(x)$',horizontalalignment='center',fontsize=15) ax.set_xlabel('X') ax.set_ylabel('Y',rotation=0) ax.set_xticks((a,b)) ax.set_xticklabels(('a','b')) ax.spines['right'].set_visible(False) ax.spines['top'].set_visible(False) ax.xaxis.set_ticks_position('bottom') ax.set_yticks([]) plt.show() 方法并尝试了 set_ylabel() 方法

text()

预期输出:

enter image description here

2 个答案:

答案 0 :(得分:2)

您可以像这样使用 labelpad 参数设置边界

ax.set_ylabel('Y', rotation=0, labelpad=10)

您也可以在 set_ylabel 行中的“Y”标签后添加空格,如下所示

ax.set_ylabel('Y ',rotation=0)

注意:

正如您所提到的,您希望两个轴标签之间的空格相同,以便您可以使用以下方法设置 'X' 标签:

 ax.text(max(x)/2, -(max(y)/10),'X')

'Y' 标签使用:

 ax.text(-(max(x)/10), max(y)/2,'Y')

答案 1 :(得分:2)

如果你调整了标签的水平位置,你会拥有和平常一样的空间。

ax.set_ylabel('Y', rotation=0, ha='right')

如果您需要更多空间,可以使用以下设置。

ax.yaxis.labelpad = 20
相关问题