Python: построение экспоненты на оси

В настоящее время я работаю над частью кода для моделирования эволюции уравнения темной энергии параметра состояния w с масштабным коэффициентом a. Для этого я решаю систему из трех связанных ОДУ, однако используемая производная относится к e-сверткам N = ln(a) (в коде x = w и ln(a) = t для простоты). У меня есть следующий код:

import numpy as np
from scipy.integrate import odeint
import matplotlib.pyplot as plt
import math

plt.rc('text', usetex=True)
plt.rc('font', family='serif')

def f(s,t):
p = 1.0
G = 1.0 + (1.0/p) 
xm = 0
x = s[0]
y = s[1]
z = s[2]
dxdt = (x - 1.0)*(3.0*(1.0 + x) - z*math.sqrt(3.0*(1.0 + x)*y))
dydt = -3.0*(x - xm)*y*(1.0 - y)
dzdt = -math.sqrt(3.0*(1.0 + x)*y)*(G - 1.0)*(z**2)
return [dxdt, dydt, dzdt]

t = np.linspace(0.0001,1,10000)
s0 = [-0.667,0.01,0.45]

s = odeint(f,s0,t)

plt.plot(t,s[:,0],'b-')
plt.grid(True)
plt.xlabel('e-foldings, N = ln(a)')
plt.ylabel('Equation of state parameter w')
plt.show()

что дает мне этот график.

Это отлично работает, однако я хочу, чтобы ось X была в единицах a, а не N = ln(a), но я не могу понять, как заставить ее работать. Я пытался изменить сюжетную линию на plt.plot(math.exp(t),s[:,0],'b-'), но получаю следующую ошибку:

Traceback (most recent call last):
  File "/Users/bradleyaldous/propr2.py", line 26, in <module>
plt.plot(math.exp(t),s[:,0],'b-')
TypeError: only size-1 arrays can be converted to Python scalars
[Finished in 6.0s]

Любая помощь приветствуется.

РЕДАКТИРОВАТЬ:

Я пытался использовать np.exp() в сюжетной линии, как и в случае с


person Brad    schedule 23.03.2018    source источник
comment
Не ответ, но вы можете найти эту документацию и это сообщение SO полезно.   -  person    schedule 23.03.2018
comment
@mikey спасибо за ответ, я думал об использовании этих осей, но мне нужно exp (мой текущий x) в качестве моей оси x - я не знаю, смогу ли я применить их здесь, но я поиграю   -  person Brad    schedule 23.03.2018
comment
Просто используйте NumPy для таких операций, как exp, sqrt,... (т.е. np.exp(t)). NumPy может сделать это напрямую для всей матрицы.   -  person Tom de Geus    schedule 23.03.2018
comment
P.S. Вы должны попытаться ограничить свой вопрос конкретной проблемой и опустить большой контекст, в котором вы его применяете: stackoverflow.com/help/mcve. Это не только хорошая практика для этой платформы, но и поможет вам выявлять проблемы и находить решения для них гораздо быстрее.   -  person Tom de Geus    schedule 23.03.2018
comment
Вы также можете сохранить свои местоположения xtick и изменить отображаемое значение. Может быть, plt.xticks (документы matplotlib) было бы проще..   -  person    schedule 23.03.2018