Двухосная диаграмма без рам - PullRequest
0 голосов
/ 24 декабря 2018

Я бы попытался построить диаграмму с двумя осями и без рамки, но если я использую функцию frameon = False, я получаю диаграмму с рамкой.В чем может быть проблема?Если я сделаю один график с одним топором, то это сработает.Мой код:

fig  = plt.subplots(1, figsize =(17,21))

ax1 = plt.subplot2grid((10, 10), (0, 0), rowspan= 2,colspan=4,frameon=False)
ax1_tw = ax1.twinx()
ax1.plot(data[['SPX500']],  linewidth=1.5, linestyle=('-'))
ax1_tw.plot(data[['VIX_Close']] ,'k',  linewidth=1.5, linestyle=('-'))
ax1_tw.plot(data[['VIX_Close_avg']] ,'orange',  linewidth=1.5, linestyle=(':'))
ax1.set(title='SP500')
ax1.set(xlabel='Date')
ax1.set(ylabel='SP500')
ax1_tw.set(ylabel='VIX')
ax1_tw.xaxis.set_major_locator(MaxNLocator(5))
ax1.legend(('SP500',),loc=2, frameon=False)
ax1_tw.legend(('VIX',),loc=1, frameon=False)
ax1_tw.xaxis.set_major_formatter(myFmt)

plt.show()

и результат: enter image description here

1 Ответ

0 голосов
/ 24 декабря 2018

Здесь, наверное, недоразумение.Проблема в том, что frameon=False относится не к рамкам осей, а к рамке поля легенды.Ниже приведен пример, объясняющий это.

Рисунок с frameon=True

fig, ax = plt.subplots()
x = np.arange(1, 30)

ax.plot(x, x**2, '-g', label='$x^2$')

ax2 = ax.twinx()
ax2.plot(x, 1/x, '-r', label='$1/x$')

ax.legend(('$x^2$',), loc='best', fontsize=16)
ax2.legend(('$1/x$',), loc='best', fontsize=16)

enter image description here

Рисунок с frameon=False

ax.legend(('$x^2$',), loc='best', frameon=False, fontsize=16)
ax2.legend(('$1/x$',), loc='best', frameon=False, fontsize=16)

enter image description here

Вместо этого вам нужно , чтобы отключить осииспользуя (вы можете включить рамку легенды, если хотите)

ax.axis('off')
ax2.axis('off')

enter image description here

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