Подтвердить что ты не робот

Matplotlib: одна строка, построенная по двум смежным осям x в разных единицах?

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

Ниже приведен пример того, что я пытаюсь сделать, за исключением одной строки, а не символов. Идея состоит в том, что, скажем, sigma = 0.4 и M = 2e15 эквивалентны и взаимозаменяемые метки для одной точки.

alt text http://img580.imageshack.us/img580/4554/screenshotuy.png

4b9b3361

Ответ 1

Для разных x-масштабов используйте twiny() (подумайте об этом как о "общих о-осях" ). Пример, слегка адаптированный из 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)