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
Ответы
Ответ 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)