Как сделать вторичную вертикальную ось, с метками слева, используя matplotlib? - PullRequest
1 голос
/ 25 марта 2020

Я пытался построить график с двумя вторичными вертикальными осями (осью Y), используя python matplotlib.

Я использовал метод twinx(), где одна из двух новых осей имеет поведение по умолчанию (метки справа), а другое с метками слева , как в примере с загаром (x) на фигуре ниже (созданной в указанном c программное обеспечение).

Есть ли простой способ сделать это? Я не ограничен в использовании метода twinx(), если есть другой способ

enter image description here

1 Ответ

3 голосов
/ 26 марта 2020

Вот способ добавить две вторичные оси Y, одна внутрь:

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(.5, 10, 1000)
y1 = np.cos(x)
y2 = np.sin(2 * x)
y3 = np.clip(np.tan(x * .6), -75, 75)

fig, ax1 = plt.subplots()

color = 'dodgerblue'
ax1.set_ylabel('$cos(x)$', color=color)
ax1.plot(x, y1, color=color)
ax1.tick_params(axis='y', labelcolor=color)

ax2 = ax1.twinx()
color = 'limegreen'
ax2.set_ylabel('$sin(2 x)$', color=color)
ax2.plot(x, y2, color=color)
ax2.tick_params(axis="y", labelcolor=color)

ax3 = ax1.twinx()
color = 'crimson'
ax3.set_ylabel('$tan(.6 x)$', color=color, labelpad=-40)
ax3.plot(x, y3, color=color)
ax3.tick_params(axis="y", labelcolor=color, direction="in", pad=-5)
plt.setp(ax3.get_yticklabels(), ha="right")

ax1.set_xlim(0, 12)

fig.tight_layout()
plt.show()

resulting plot

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