Как масштабировать фигуры с помощью matplotlib - PullRequest
0 голосов
/ 13 марта 2019

Я создал две фигуры с разными размерами данных. Следовательно, ось Y на фиг.2 более вытянута, чем другая (фиг.1), и в результате ширина на фиг.2 становится меньше. Как мне масштабировать две фигуры до одинакового размера?

Figure 1

Код, который я использовал для рисунка 1, выглядит следующим образом:

df.index = pd.to_datetime(df.index, format='%d-%m-%y')
fig=plt.imshow(df, cmap='YlOrBr', interpolation='nearest', 
vmin=0, vmax=12)

l1 = pd.to_datetime(df.index).month
l2 = pd.to_datetime(df.columns).hour
x = pd.Series(l2).drop_duplicates()
y = pd.Series(l1).drop_duplicates()

plt.xticks(x.index,('00:00', '01:00', '02:00', '03:00', '04:00', 
'05:00', '06:00', '07:00', '08:00', '09:00', '10:00', '11:00', '12:00', 
'13:00', '14:00', '15:00', '16:00', '17:00', '18:00', '19:00', '20:00', 
'21:00', '22:00', '23:00'), rotation=90)
plt.yticks(y.index,('', 'Mar `18 ', 'Feb `18', 'Jan `18', 'Dec `17', 
'Nov `17'))
plt.colorbar()
plt.xlabel("Time (UTC)")
plt.ylabel("Date")
plt.title("title")
plt.savefig('fig.svg', dpi=1200)
plt.show()

Figure 2

Код, который я использовал для рисунка 2, выглядит следующим образом:

df.index = pd.to_datetime(df.index, format='%d-%m-%y')
fig=plt.imshow(df, cmap='YlOrBr', interpolation='nearest', 
vmin=0, vmax=12)

l11 = pd.to_datetime(df.index).month
l12 = pd.to_datetime(df.columns).hour
x = pd.Series(l12).drop_duplicates()
y = pd.Series(l11).drop_duplicates()

plt.xticks(x.index,('00:00', '01:00', '02:00', '03:00', '04:00', 
'05:00', '06:00', '07:00', '08:00', '09:00', '10:00', '11:00', '12:00', 
'13:00', '14:00', '15:00', '16:00', '17:00', '18:00', '19:00', '20:00', 
'21:00', '22:00', '23:00'), rotation=90)
plt.yticks(y.index,('', 'Oct `18 ', 'Sep `18', 'Aug `18', 'Jul `18', 
'Jun `18', 'May `18', 'Apr `18'))
plt.colorbar()
plt.xlabel("Time (UTC)")
plt.ylabel("Date")
plt.title("title")
plt.savefig('df.svg', dpi=1200)
plt.show()

1 Ответ

0 голосов
/ 13 марта 2019

Используя объектно-ориентированный синтаксис matplotlib, вы можете установить размер рисунка при его инициализации:

fig = plt.figure(0, figsize=(10, 8))
ax = fig.subplots(nrow=1, ncols=1)

ax.imshow(df, cmap='YlOrBr', interpolation='nearest', vmin=0, vmax=12)

Имя некоторых команд немного отличается в объектно-ориентированном синтаксисе.plt.xticks становится ax.set_xticks и ax.set_xticklabels.plt.xlabel становится ax.set_xlabel

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...