Python Matplotlib:在特定y轴截距处设置x轴刻度标签,但在y=0处设置x轴和刻度

Python Matplotlib:在特定y轴截距处设置x轴刻度标签,但在y=0处设置x轴和刻度,python,matplotlib,Python,Matplotlib,作为标题,我有多个子图,希望x轴刻度标签显示在y=-1(我所有的子图都有y型标记(-1.1到1.1),而x轴线和刻度显示在y=0。我当前的编辑代码如下: while x < 10: plt.add_subplot(10,1,x).yaxis.tick_right() plt.subplot(10,1,x).spines['bottom'].set_position('zero') plt.subplot(10,1,x).spines['bottom'].set_c

作为标题,我有多个子图,希望x轴刻度标签显示在y=-1(我所有的子图都有y型标记(-1.1到1.1),而x轴线和刻度显示在y=0。我当前的编辑代码如下:

while x < 10: 
    plt.add_subplot(10,1,x).yaxis.tick_right()
    plt.subplot(10,1,x).spines['bottom'].set_position('zero')
    plt.subplot(10,1,x).spines['bottom'].set_color('xkcd:light grey')
    plt.subplot(10,1,x).set_facecolor('xkcd:dark grey')
    plt.tick_params(axis='x', direction='out', labelbottom='on', color='xkcd:light grey', labelcolor='xkcd:light grey')
    plt.plot()
    plt.ylim(-1.1,1.1)

    x+=1

plt.show()
当x<10时:
plt.add_子图(10,1,x).yaxis.tick_right()
plt.子批次(10,1,x).脊椎['bottom']。设置位置('zero'))
plt.子图(10,1,x).刺['bottom'].设置颜色('xkcd:浅灰色')
plt.子图(10,1,x).设置面颜色('xkcd:深灰色')
plt.勾选参数(轴='x',方向='out',标签底部='on',颜色='xkcd:浅灰色',标签颜色='xkcd:浅灰色')
plt.plot()
plt.ylim(-1.1,1.1)
x+=1
plt.show()
子批次的当前示例如下所示:


通常可通过以下方式设置,并指定“数据”

plt.subplot(10,1,x).spines['bottom'].set_position(('data', -1))
数据””:将脊椎放置在指定的数据坐标处


通常可通过并指定“数据””进行设置:

plt.subplot(10,1,x).spines['bottom'].set_position(('data', -1))
数据””:将脊椎放置在指定的数据坐标处


在数据坐标中设置标签的位置是很不寻常的。但这仍然是可能的。类似于您可以使用变换来移动标签。在这里,我们将首先将标签移动1个数据单位,然后应用通常的变换

import matplotlib.pyplot as plt
import numpy as np; np.random.seed(42)
import matplotlib.transforms as mtrans

x = np.linspace(2013.6,2018.4)
y = np.cumsum(np.random.randn(50))/12.+0.3

ax = plt.subplot(111)
ax.yaxis.tick_right()
ax.spines['bottom'].set_position('zero')
ax.spines['bottom'].set_color('xkcd:light grey')
ax.set_facecolor('xkcd:dark grey')
ax.tick_params(axis='x', direction='out', labelbottom=True, pad=0, 
               color='xkcd:light grey', labelcolor='xkcd:light grey')
ax.plot(x,y)
ax.set_ylim(-1.1,1.1)


trans = mtrans.Affine2D().translate(0,-1.)
for t in ax.get_xticklabels():
    t.set_transform(trans + t.get_transform())

plt.tight_layout()
plt.show()

在数据坐标中设置标签的位置是很不寻常的。但这仍然是可能的。类似于您可以使用变换来移动标签。在这里,我们将首先将它们移动1个数据单位,然后应用通常的变换

import matplotlib.pyplot as plt
import numpy as np; np.random.seed(42)
import matplotlib.transforms as mtrans

x = np.linspace(2013.6,2018.4)
y = np.cumsum(np.random.randn(50))/12.+0.3

ax = plt.subplot(111)
ax.yaxis.tick_right()
ax.spines['bottom'].set_position('zero')
ax.spines['bottom'].set_color('xkcd:light grey')
ax.set_facecolor('xkcd:dark grey')
ax.tick_params(axis='x', direction='out', labelbottom=True, pad=0, 
               color='xkcd:light grey', labelcolor='xkcd:light grey')
ax.plot(x,y)
ax.set_ylim(-1.1,1.1)


trans = mtrans.Affine2D().translate(0,-1.)
for t in ax.get_xticklabels():
    t.set_transform(trans + t.get_transform())

plt.tight_layout()
plt.show()

您可以使用
轴。勾选参数('x',pad=100)
在x轴标签上方创建填充,将其向下推至
y=-1
。调整填充值,直到找到所需位置。若要获得更好的答案,请发布包含预期输出的a。您可以使用
轴。勾选参数('x',pad=100)
若要在x轴标签上方创建填充,请将其向下推至
y=-1
。调整填充值,直到找到所需位置。若要获得更好的答案,请发布包含预期输出的a。这将使整个轴(包括刻度)下降至-1。是否有办法只移动刻度标签(即本例中的日期)下降到y=-1?@Singapore123:当然有办法,尽管我对你的提问感到困惑。也许可以发布一个示例屏幕截图,说明你希望它看起来如何。目前,当我尝试你的代码时,我只得到一个灰色条,因此你的更多代码显示数据可能也会有所帮助。这会带来整个轴(包括勾号)降到-1.有没有办法只带上勾号标签(即本例中的日期)归结到y=-1?@Singapore123:当然有办法,尽管我对你的提问感到困惑。也许可以发布一个示例屏幕截图,说明你希望它看起来如何。目前,当我尝试你的代码时,我只会得到一个灰色条,所以你的更多代码显示数据可能也会有所帮助。