6

Построение графиков с логарифмическими осями

8

Я хочу построить график с одной логарифмической осью, используя библиотеку matplotlib.

Вот пример программы:

import matplotlib.pyplot as plt
a = [pow(10, i) for i in range(10)]  # экспоненциальные значения
fig = plt.figure()
ax = fig.add_subplot(2, 1, 1)

line, = ax.plot(a, color='blue', lw=2)
plt.show()

Однако у меня не получается установить одну из осей в логарифмическом масштабе. Как это можно сделать?

3 ответ(ов)

1

Если вы хотите изменить основание логарифма, просто добавьте:

plt.yscale('log', base=2)

Обратите внимание, что до версии Matplotlib 3.3 вам нужно было использовать параметры basex и basey для задания оснований логарифмов.

0

Я понимаю, что это немного не по теме, так как в некоторых комментариях упоминалось, что ax.set_yscale('log') — это "самое лучшее" решение, но мне кажется, стоит внести поправку. Я бы не рекомендовал использовать ax.set_yscale('log') для гистограмм и столбчатых графиков. В моей версии (0.99.1.1) я столкнулся с некоторыми проблемами отображения — не уверен, насколько это распространённая проблема. Тем не менее, как для столбчатых графиков, так и для гистограмм имеются необязательные аргументы, позволяющие установить логарифмическую шкалу по оси Y, которые работают нормально.

Ссылки: http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.bar

http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.hist

0

Если вы просто используете незамысловатый API, как это часто делаю я (я много работаю с ним в ipython), то это просто

yscale('log')
plot(...)

Надеюсь, это поможет кому-то, кто ищет простой ответ! 😃

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь