创建两个子块后如何共享它们的x轴?

2024-05-19 11:02:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图共享两个子块轴,但在创建图形后我需要共享x轴。 例如,我创建了这个图:

import numpy as np
import matplotlib.pyplot as plt

t= np.arange(1000)/100.
x = np.sin(2*np.pi*10*t)
y = np.cos(2*np.pi*10*t)

fig=plt.figure()
ax1 = plt.subplot(211)
plt.plot(t,x)
ax2 = plt.subplot(212)
plt.plot(t,y)

# some code to share both x axis

plt.show()

我将插入一些代码来共享两个x轴,而不是注释。 我不知道怎么做。有一些属性 _shared_x_axes_shared_x_axes当我检查到图形轴(fig.get_axes())时,但我不知道如何链接它们。


Tags: importnumpy图形plotmatplotlibasnppi
1条回答
网友
1楼 · 发布于 2024-05-19 11:02:51

共享轴的通常方法是在创建时创建共享属性。或者

fig=plt.figure()
ax1 = plt.subplot(211)
ax2 = plt.subplot(212, sharex = ax1)

或者

fig, (ax1, ax2) = plt.subplots(nrows=2, sharex=True)

因此,不必在创建轴之后共享轴。

但是,如果出于任何原因,您需要在创建轴之后共享轴(实际上,使用创建某些子块的不同库,如here,或sharing an inset axes可能是一个原因),仍然有一个解决方案:

使用

ax1.get_shared_x_axes().join(ax1, ax2)

在两个轴ax1ax2之间创建链接。与创建时的共享不同,您必须为其中一个轴手动设置xticklabels(以防需要)。

一个完整的例子:

import numpy as np
import matplotlib.pyplot as plt

t= np.arange(1000)/100.
x = np.sin(2*np.pi*10*t)
y = np.cos(2*np.pi*10*t)

fig=plt.figure()
ax1 = plt.subplot(211)
ax2 = plt.subplot(212)

ax1.plot(t,x)
ax2.plot(t,y)

ax1.get_shared_x_axes().join(ax1, ax2)
ax1.set_xticklabels([])
# ax2.autoscale() ## call autoscale if needed

plt.show()

相关问题 更多 >

    热门问题