Как я могу настроить каждую ось в субплоте с помощью subplot2grid? - PullRequest
0 голосов
/ 01 ноября 2019

Я запускаю несколько тестов с созданным мной csv-файлом со следующим кодом

import matplotlib.pyplot as plt
import pandas as pd
from matplotlib import dates as mpl_dates

data = pd.read_csv('teste_csvread_panda.csv')
data['date'] = pd.to_datetime(data['date'])
data.sort_values('date', inplace=True)
date = data['date']
temp = data['temp']
sal = data['sal']

ax1 = plt.subplot2grid((2,1), (0,0), rowspan=1, colspan=1)
ax2 = plt.subplot2grid((2,1), (1,0), rowspan=1, colspan=1)

ax1.plot(date,temp, marker='.', label='temp')
ax1.legend(loc='upper right')
date_format = mpl_dates.DateFormatter('%b %d')
plt.gca().xaxis.set_major_formatter(date_format)

ax2.plot(date,sal, marker='.', label='sal')
ax2.legend(loc='lower left')
plt.gca().xaxis.set_major_formatter(date_format)

plt.show()

результирующий график здесь .

Я бы хотелОтформатируйте ось даты для обоих подзаговоров, но очевидно, что она работает только для последнего подзаговора. Как я могу это сделать?

Заранее спасибо.

1 Ответ

0 голосов
/ 01 ноября 2019

Это должно работать. Вам необходимо определить, какая ось является текущей осью. Я использовал plt.sca(ax), чтобы сделать это в начале каждого сюжета.

ax1 = plt.subplot2grid((2,1), (0,0), rowspan=1, colspan=1)
ax2 = plt.subplot2grid((2,1), (1,0), rowspan=1, colspan=1)

plt.sca(ax1)
plt.plot(date,temp, marker='.', label='temp')
plt.legend(loc='upper right')
date_format = mpl_dates.DateFormatter('%b %d')
plt.gca().xaxis.set_major_formatter(date_format)

plt.sca(ax2)
plt.plot(date, sal, marker='.', label='sal')
plt.legend(loc='lower left')
plt.gca().xaxis.set_major_formatter(date_format)

plt.show()
...