Центр третьего участка в середине второго ряда Python - PullRequest
0 голосов
/ 18 ноября 2018

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

    fig, axes = plt.subplots(nrows=2, ncols=2, figsize=(13,10))
    ax= axes.flatten()
    ax[0].plot(vDT, np.cumsum(mWopt0[asset0,:])*percentage/iTT, label= 'COAL, c = 0')
    ax[0].legend()
    ax[0].set_title('Proportion in most invested stock')
    ax[1].plot(vDT, np.cumsum(mWopt01[asset01,:])*percentage/iTT, label= 'OINL, c = 0.1')
    ax[1].plot(vDT, np.cumsum(mWopt03[asset03,:])*percentage/iTT, label= 'OINL, c = 0.3')
    ax[1].plot(vDT, np.cumsum(mWopt05[asset05,:])*percentage/iTT, label= 'OINL, c = 0.5')
    ax[1].plot(vDT, np.cumsum(mWopt2[asset2,:])*percentage/iTT, label= 'OINL, c = 2')
    ax[1].plot(vDT, np.cumsum(mWopt5[asset5,:])*percentage/iTT, label= 'OINL, c = 5')
    ax[1].plot(vDT, np.cumsum(mWopt10[asset10,:])*percentage/iTT, label= 'OINL, c = 10')
    ax[1].legend()
    ax[1].set_title('Proportion in most invested stock')
    ax[2].plot(vDT, np.cumsum(mWopt01[index,:])*percentage/iTT, label= 'c = 0')
    ax[2].plot(vDT, np.cumsum(mWopt01[index,:])*percentage/iTT, label= 'c = 0.1')
    ax[2].plot(vDT, np.cumsum(mWopt03[ index,:])*percentage/iTT, label= 'c = 0.3')
    ax[2].plot(vDT, np.cumsum(mWopt05[index,:])*percentage/iTT, label= 'c = 0.5')
    ax[2].plot(vDT, np.cumsum(mWopt2[index,:])*percentage/iTT, label= 'c = 2')
    ax[2].plot(vDT, np.cumsum(mWopt5[index,:])*percentage/iTT, label= 'c = 5')
    ax[2].plot(vDT, np.cumsum(mWopt10[index,:])*percentage/iTT, label= 'c = 10')
    ax[2].legend()
    ax[2].set_title('Proportion invested in index')
    ax[0].set_ylabel('Expanding window weight')
    ax[1].set_ylabel('Expanding window weight')
    ax[2].set_ylabel('Expanding window weight')
    ax[3].remove()
    fig.autofmt_xdate(bottom=0.2, rotation=75, ha='right')
    plt.savefig('NSE_por_unrestricted_mostweightSI.jpg', bbox_inches='tight')
    plt.show()

1 Ответ

0 голосов
/ 18 ноября 2018

matplotlib.gridspec.Gridspec решает вашу проблему и может быть передано plt.subplot. В этом ответе вы можете видеть, что сетку 4x4 можно легко использовать для позиционирования графика в середине:

import matplotlib.gridspec as gridspec
import matplotlib.pyplot as plt

gs = gridspec.GridSpec(4, 4)

ax1 = plt.subplot(gs[:2, :2])
ax1.plot(range(0,10), range(0,10))

ax2 = plt.subplot(gs[:2, 2:])
ax2.plot(range(0,10), range(0,10))

ax3 = plt.subplot(gs[2:4, 1:3])
ax3.plot(range(0,10), range(0,10))

plt.show()

Вы можете ознакомиться с демонстрационными примерами для gridspec здесь: https://matplotlib.org/tutorials/intermediate/gridspec.html#sphx-glr-tutorials-intermediate-gridspec-py

Единственная проблема в том, что вы используете шаблон fig, axes =, который, как я не вижу, обычно используется с Gridspec. Вам нужно будет немного изменить рефакторинг.

...