Установка положения сдвоенных осей невозможна - PullRequest
2 голосов
/ 25 июня 2019

У меня есть этот код:

import numpy as np
import matplotlib.pyplot as plt
import matplotlib
fig = plt.figure()
ax1 = fig.add_subplot(1, 1, 1)
a = np.array([1,2,3])
b = a 
ax1.plot(a,b)
ax2 = ax1.twinx()
ax2.set_position(matplotlib.transforms.Bbox([[0.125, 0.125], [0.9, 0.2]]))
c = np.array([4,5,6])
d = c
ax2.plot(c,d)
plt.show()

Когда я запускаю это с Python 2, это приводит к:

My plot using Python 2

Проблема в том, что когда я пытаюсь использовать тот же код с помощью Python 3, я получаю эту картинку:

My plot using Python 3

Как получить такой же результат при использовании Python 3?

1 Ответ

1 голос
/ 25 июня 2019

Это была ошибка, которая теперь исправлена ​​(поэтому она не имеет ничего общего с версией Python, а скорее с используемой версией matplotlib).Вы можете использовать inset_axes вместо обычного подзаговора.Последний может выглядеть так:

import numpy as np
from matplotlib.transforms import Bbox
import matplotlib.pyplot as plt

fig = plt.figure()
ax1 = fig.add_subplot(111, label="first")
ax2 = fig.add_subplot(111, label="second")

ax2.set_position(Bbox([[0.125, 0.125], [0.9, 0.2]]))
ax1.get_shared_x_axes().join(ax1, ax2)
ax2.yaxis.tick_right()
ax2.tick_params(bottom=False, labelbottom=False)
ax2.set_facecolor("none")

a = np.array([1,2,3])
ax1.plot(a,a)

c = np.array([4,5,6])
ax2.plot(c,c)

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