gpt4 book ai didi

python - 添加一个在其他人共享 x 轴时不共享 x 轴的子图

转载 作者:太空宇宙 更新时间:2023-11-04 01:22:47 26 4
gpt4 key购买 nike

我正在尝试将一个子图添加到子图图形的底部。我遇到的问题是所有第一组子图都想共享它们的 x 轴,但不是底部的。

channels 是想要共享 x 轴的子图。

那么如何添加不共享 x 轴的子图?这是我的代码:

def plot(reader, tdata):
'''function to plot the channels'''

channels=[]
for i in reader:
channels.append(i)

fig, ax = plt.subplots(len(channels)+1, sharex=False, figsize=(30,16), squeeze=False)
plot=0
#where j is the channel name
for i, j in enumerate(reader):

y=reader["%s" % j]
ylim=np.ceil(np.nanmax(y))
x=range(len((reader["%s" % j])))
ax[plot,0].plot(y, lw=1, color='b')
ax[plot,0].set_title("%s" % j)
ax[plot,0].set_xlabel('Time / s')
ax[plot,0].set_ylabel('%s' % units[i])
ax[plot,0].set_ylim([np.nanmin(y), ylim+(ylim/100)*10])
plot=plot+1

###here is the new subplot that doesn't want to share the x axis###
ax[plot, 0].plot()
plt.tight_layout()
plt.show()

此代码NOT 有效,因为它们共享最后一个子图的 x 轴。 channel 的长度会根据我之前在代码中指定的内容而变化。

以某种方式使用 add_subplot 是否是一个有效的选项,尽管我没有固定数量的 channel ?

非常感谢您的帮助

编辑乔的形象:

enter image description here

最佳答案

这种情况下直接使用fig.add_subplot是最简单的。

举个简单的例子:

import matplotlib.pyplot as plt

fig = plt.figure(figsize=(6, 8))

# Axes that share the x-axis
ax = fig.add_subplot(4, 1, 1)
axes = [ax] + [fig.add_subplot(4, 1, i, sharex=ax) for i in range(2, 4)]

# The bottom independent axes
axes.append(fig.add_subplot(4, 1, 4))

# Let's hide the tick labels for all but the last shared-x axes
for ax in axes[:2]:
plt.setp(ax.get_xticklabels(), visible=False)

# And plot on the first subplot just to demonstrate that the axes are shared
axes[0].plot(range(21), color='lightblue', lw=3)

plt.show()

enter image description here

关于python - 添加一个在其他人共享 x 轴时不共享 x 轴的子图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20095088/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com