Matplotlib: одна линия, построенная против двух связанных осей x в разных единицах? - PullRequest
12 голосов
/ 29 июня 2010

У меня есть одна переменная y, которую я пытаюсь построить для двух связанных осей x, в верхней и нижней части рисунка (например, y = "количество вещей в кубе", x1 = "длина стороны куба", x2 = "объем куба"). У меня есть y, x1, x2 в массивах numpy. Отношения между моими x1 и x2 взаимно однозначны и монотонны, но не просты, и они увеличиваются в разных направлениях, таких как «длина стороны» и «обратный объем». Я пытался использовать twiny () и twin (), но, похоже, они предназначены для построения разных переменных y. Есть идеи? Спасибо всем!

Ниже приведен пример того, что я пытаюсь сделать, за исключением одной строки, а не символов. Идея состоит в том, что, скажем, сигма = 0,4 и М = 2е15 являются эквивалентными и взаимозаменяемыми метками для одной точки.

альтернативный текст http://img580.imageshack.us/img580/4554/screenshotuy.png

1 Ответ

8 голосов
/ 29 июня 2010

Для разных x-шкал используйте twiny() (воспринимайте это как «общие оси y»).Пример, слегка адаптированный из документации matplotlib :

import numpy as np
import matplotlib.pyplot as plt

# plot f(x)=x for two different x ranges
x1 = np.linspace(0, 1, 50)
x2 = np.linspace(0, 2, 50)
fig = plt.figure()

ax1 = fig.add_subplot(111)
ax1.plot(x1, x1,'b--')

ax2 = ax1.twiny()
ax2.plot(x2, x2, 'go')

plt.show()

Если вы просто хотели построить вторую ось, установите второй набор данных как невидимый.

ax2.plot(x2, x2, alpha=0)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...