как визуализировать значения в логарифмическом масштабе на матплоталибе? - PullRequest
6 голосов
/ 02 апреля 2012

У меня есть вейлы с очень маленькой разницей, как ... 0.000001.Я хочу визуализировать их в логарифмическом масштабе.Мне интересно, как это сделать в matplotlib.

Большое спасибо

Ответы [ 4 ]

17 голосов
/ 02 апреля 2012

http://matplotlib.sourceforge.net/api/pyplot_api.html#matplotlib.pyplot.axis

Просто добавьте аргумент ключевого слова log=True

Или, например,

from matplotlib import pyplot
import math
pyplot.plot([x for x in range(100)],[math.exp(y) for y in range(100)] )
pyplot.xlabel('arbitrary')
pyplot.ylabel('arbitrary')
pyplot.title('arbitrary')

#pyplot.xscale('log')
pyplot.yscale('log')

pyplot.show()

enter image description here

3 голосов
/ 03 апреля 2017

Поскольку во всех других ответах упоминается только глобальный pyplot.xscale("log") подход: вы также можете установить его для каждой оси, но тогда синтаксис будет:

ax.set_yscale("log")
2 голосов
/ 02 апреля 2012

Вместо plot вы можете использовать semilogy:

import numpy as npy
import matplotlib.pyplot as plt
x=npy.array([i/100. for i in range(100)])
y=npy.exp(20*x)
plt.semilogy(x, y)
plt.show()

Но я не совсем уверен, что вы надеетесь получить от использования масштаба журнала. Когда вы говорите «небольшая разница», вы имеете в виду, что значения могут быть чем-то вроде 193.000001 и 193.000002? Если это так, это может помочь вычесть 193.

2 голосов
/ 02 апреля 2012

Вы можете использовать этот кусок кода:

import matplotlib.pyplot
# to set x-axis to logscale
matplotlib.pyplot.xscale('log')
# to set y-axis to logscale
matplotlib.pyplot.yscale('log')
...