У меня проблемы с пониманием подзаговоров Pandas - и с тем, как создать оси так, чтобы показывались все вспомогательные участки (не перезаписывались последующим графиком).
Для каждого «сайта» я хочу построить график временных рядов всех столбцов в кадре данных.
«Сайтами» здесь являются «акула» и «единорог», оба с двумя переменными. Выходными данными должны быть 4 построенные линии - индексированный по времени график для Var 1 и Var2 на каждом участке.
![enter image description here](https://i.stack.imgur.com/xp6Xr.jpg)
Создание данных с указанием времени с помощью Nans:
df = pd.DataFrame({
# some ways to create random data
'Var1':pd.np.random.randn(100),
'Var2':pd.np.random.randn(100),
'Site':pd.np.random.choice( ['unicorn','shark'], 100),
# a date range and set of random dates
'Date':pd.date_range('1/1/2011', periods=100, freq='D'),
# 'f':pd.np.random.choice( pd.date_range('1/1/2011', periods=365,
# freq='D'), 100, replace=False)
})
df.set_index('Date', inplace=True)
df['Var2']=df.Var2.cumsum()
df.loc['2011-01-31' :'2011-04-01', 'Var1']=pd.np.nan
Составьте фигуру с подзаговором для каждого сайта:
fig, ax = plt.subplots(len(df.Site.unique()), 1)
counter=0
for site in df.Site.unique():
print(site)
sitedat=df[df.Site==site]
sitedat.plot(subplots=True, ax=ax[counter], sharex=True)
ax[0].title=site #Set title of the plot to the name of the site
counter=counter+1
plt.show()
Однако это не работает так, как написано. Второй подзаговор заканчивается перезаписью первого. В моем реальном случае использования у меня есть 14 переменных количества сайтов в каждом кадре данных, а также переменное число «Var1, 2, ...». Таким образом, мне нужно решение, которое не требует создания каждой оси (ax0, ax1, ...) вручную.
В качестве бонуса мне бы хотелось, чтобы заголовок каждого «сайта» находился над этим набором сюжетов.
Текущий код перезаписывает первый сюжет «Сайт» вторым. Чего мне здесь не хватает с топорами ?!
![enter image description here](https://i.stack.imgur.com/QZebE.jpg)