我在尝试调整matplotlib中的一个子图时遇到了麻烦。基本上我有四个地块,我希望它的大小约为其他的1.5。
我也在努力为顶级子情节提供传奇。我希望将每种颜色指定为1,2,3,4或5(请参阅图片)。
这是我的绘图功能代码
def plot_data(avg_rel_track, sd_rel_track_sum, sd_index, sd_grad):
fig, (ax0, ax1, ax2, ax3) = plt.subplots(nrows=4, figsize=(15,10))
fig.subplots_adjust(top=0.85)
ax0.plot(avg_rel_track_nan)
if len(sd_index)!=0:
if len(sd_index)>1:
for i in range(1, len(sd_index)):
if sd_grad[i]==1:
ax0.axvspan(sd_index[i-1],sd_index[i], edgecolor='#FFCC66', facecolor='#FFCC66', alpha=1)
#The following plot has 5 plots within it.
ax0.set_title('Averaged Relative Track',fontsize=11)
ax0.set_ylim(auto=True)
ax1.plot(sd_rel_track_sum)
ax1.set_title('RT Standard Deviation',fontsize=11)
ax1.set_ylim([0,250])
ax2.plot(splitpre)
ax2.set_title('Track Split',fontsize=11)
ax3.plot(ts_sd)
ax3.set_title('Track Split Standard Dev',fontsize=11)
ax3.set_ylim([0,100])
fig.tight_layout()
plt.show()
我正在努力寻找一种方法来调整大小而不改变编写函数的整个方式。我似乎无法找到'subplots'的文档。
另外据我所知,你必须在你的情节中添加一个'标签'才能创建一个图例。但是,顶部子图的所有数据是同时绘制的吗?
答案 0 :(得分:8)
您可以使用matplotlib的gridspec
模块:
import matplotlib.pyplot as plt
from matplotlib import gridspec
def plot_data(avg_rel_track, sd_rel_track_sum, sd_index, sd_grad):
fig = plt.figure(figsize=(15,10))
gs = gridspec.GridSpec(4, 1, height_ratios=[1, 1 ,1.5, 1])
ax0 = plt.subplot(gs[0])
ax1 = plt.subplot(gs[1])
ax2 = plt.subplot(gs[2])
ax3 = plt.subplot(gs[3])
fig.subplots_adjust(top=0.85)
lineObjects = ax0.plot(avg_rel_track_nan)
if len(sd_index)>1:
for i in xrange(1, len(sd_index)):
if sd_grad[i]==1:
ax0.axvspan(sd_index[i-1], sd_index[i],
edgecolor='#FFCC66', facecolor='#FFCC66',
alpha=1)
#The following plot has 5 plots within it.
ax0.set_title('Averaged Relative Track',fontsize=11)
ax0.legend(lineObjects, (1,2,3,4,5))
ax1.plot(sd_rel_track_sum)
ax1.set_title('RT Standard Deviation',fontsize=11)
ax1.set_ylim([0,250])
ax2.plot(splitpre)
ax2.set_title('Track Split',fontsize=11)
ax3.plot(ts_sd)
ax3.set_title('Track Split Standard Dev',fontsize=11)
ax3.set_ylim([0,100])
fig.tight_layout()
plt.show()