如何设置轴和标签之间的间距

Anu*_*bas 23 python visualization matplotlib

我的代码:

#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()
Run Code Online (Sandbox Code Playgroud)

上面的代码给出:

在此输入图像描述

我的问题:

正如您所看到的,ylabel 'Y' 与 y 轴接触,并且 xlabel 'X' 和 x 轴之间有空间

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

我的尝试:

在上面的代码中我注释了set_ylabel()方法并尝试了text()方法

#ax.set_ylabel('Y',rotation=0)
fig.text(0.1,0.5,'Y')
#this code creating a little space between y label and y-axis but I want the same amount of space that is between x label an x axis
Run Code Online (Sandbox Code Playgroud)

预期输出:

在此输入图像描述

Zal*_*ani 32

您可以使用 labelpad 参数设置边界,如下所示

ax.set_ylabel('Y', rotation=0, labelpad=10)
Run Code Online (Sandbox Code Playgroud)

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

ax.set_ylabel('Y ',rotation=0)
Run Code Online (Sandbox Code Playgroud)

笔记:

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

 ax.text(max(x)/2, -(max(y)/10),'X')
Run Code Online (Sandbox Code Playgroud)

“Y”标签使用:

 ax.text(-(max(x)/10), max(y)/2,'Y')
Run Code Online (Sandbox Code Playgroud)


r-b*_*ers 5

如果调整标签的水平位置,您将拥有与平常相同的空间。

ax.set_ylabel('Y', rotation=0, ha='right')
Run Code Online (Sandbox Code Playgroud)

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

ax.yaxis.labelpad = 20
Run Code Online (Sandbox Code Playgroud)