У меня есть некоторые данные, которые я рисую на полулогарифмическом графике (стиль лог-лина с логарифмической шкалой по оси y). Есть ли способ изменить метки метки оси y от их фактических значений до их логарифмических значений?Python, matplotlib: как установить значения меток меток на их логарифмические значения
В качестве примера, рассмотрим следующий код:
import matplotlib.pyplot as plt
import numpy as np
x=np.array([1,2,3,4,5])
def f(x):
return 10**(x-1)
plt.plot(x,f(x))
plt.yscale(u'log')
plt.show()
Который производит следующий сюжет:
(К сожалению это вид большой, я не знаю, как сделать его меньше, не стесняйтесь редактировать, чтобы помочь с этим).
На этом рисунке тиковые метки показаны как 10^0, 10^1, 10^2 и т. Д .; Однако я хотел бы их показать, как их логарифмические значения: 0, 1, 2 и т.д.
Я понимаю, что я мог вернуться назад и изменить plt.plot(x,f(x))
к plt.plot(x,np.log10(f(x)))
, а затем сделать линейную ось у снова вместо логарифмического, но я хочу чтобы узнать, есть ли в любом случае matplotlib может просто изменить значения галочки y-оси самостоятельно, без меня нужно поставить np.log10()
во все мои plt.plot()
. Моя причина для этого двоякая: у меня в моем коде много строк plt.plot()
, и я бы предпочел не возвращаться и менять их для всех, и тогда у меня не было бы логарифмически разнесенных мелких тиков (хотя я уверен есть способ изменить это даже с помощью линейной оси).
EDIT: Я знаю this question, который имеет некоторое сходство с моим, но не то же самое. Человек в этом вопросе хочет изменить метки тика от научной формы до «нормальной» десятичной формы. Я хочу изменить метки тика от научной формы до значения логарифмического (базового 10) числа. Я уверен, что ответ будет похож на тот, который я связал, но для меня это не очевидно, как это сделать. Фактически, я рассмотрел этот вопрос, прежде чем публиковать мои, но все же решил опубликовать мой, потому что я не знал, как применить его к моей проблеме. Возможно, опытным программистам очевидно, как применять методы вопроса, которые я связал с моей ситуацией, но это не очевидно для меня, поэтому, пожалуйста, помогите мне пройти через это.
Если бы вы могли показать мне образец кода (скопировав образец кода и вставив необходимые строки), как это работает, я бы очень его оценил.
Используй форматировщик http://matplotlib.org/examples/api/date_index_formatter.html –
не уверен, что дата форматировщик лучшей целевая ссылка. .. @PaulH – tacaswell
Используйте [шкалу журнала] (http://matplotlib.org/examples/pylab_examples/log_demo.html). Вы должны попробовать посмотреть [страницы галереи] (http://matplotlib.org/gallery.html) и найти то, что хотите. – will