繁体   English   中英

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

[英]Matplotlib: Setting xaxis tick labels at specific y-intercept but x-axis and ticks at y=0

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

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()

子图的当前示例如下所示:

在此处输入图片说明

在数据坐标中设置刻度标签的位置是非常不寻常的。 但这仍然是可能的。 此问题类似,您可以使用变换来移动标签。 在这里,我们首先将它们移位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()

在此处输入图片说明

通常,这可以通过set_position设置,并指定“ data ”:

plt.subplot(10,1,x).spines['bottom'].set_position(('data', -1))

' data ':将书脊放置在指定的数据坐标处。

↳matplotlib.spines | set_position

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM