[python] 파이썬에서 matplotlib을 사용하여 로그 축을 플롯하십시오.

matplotlib을 사용하여 하나의 로그 축으로 그래프를 플롯하려고합니다.

문서를 읽었지만 구문을 파악할 수 없습니다. 'scale=linear'줄거리 인수에서 와 같이 단순한 것일 수도 있지만 제대로 이해하지 못하는 것 같습니다.

샘플 프로그램 :

import pylab
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)
pylab.show()



답변

Axes.set_yscale방법을 사용할 수 있습니다 . 그러면 Axes객체가 생성 된 후 배율을 변경할 수 있습니다 . 또한 필요한 경우 사용자가 스케일을 선택할 수 있도록 컨트롤을 구축 할 수 있습니다.

추가 할 관련 줄은 다음과 같습니다.

ax.set_yscale('log')

'linear'선형 스케일로 다시 전환 하는 데 사용할 수 있습니다 . 코드는 다음과 같습니다.

import pylab
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)

ax.set_yscale('log')

pylab.show()

결과 차트


답변

우선, 혼합 pylab하고 pyplot코딩 하는 것은 그리 깔끔하지 않습니다 . 또한 pylab을 사용하는 것보다 pyplot 스타일이 선호 됩니다.

다음은 pyplot함수 만 사용하여 약간 정리 된 코드입니다 .

from matplotlib import pyplot

a = [ pow(10,i) for i in range(10) ]

pyplot.subplot(2,1,1)
pyplot.plot(a, color='blue', lw=2)
pyplot.yscale('log')
pyplot.show()

관련 기능은 pyplot.yscale()입니다. 객체 지향 버전을 사용하는 경우 메소드로 대체하십시오 Axes.set_yscale(). pyplot.xscale()(또는 Axes.set_xscale())를 사용하여 X 축의 배율을 변경할 수도 있습니다 .

내 질문 확인 ‘log’와 ‘symlog’의 차이점은 무엇입니까? matplotlib이 제공하는 그래프 스케일의 몇 가지 예를 살펴보십시오.


답변

plot 대신 semilogy 를 사용 하면 됩니다.

from pylab import *
import matplotlib.pyplot  as pyplot
a = [ pow(10,i) for i in range(10) ]
fig = pyplot.figure()
ax = fig.add_subplot(2,1,1)

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


답변

대수의 기초를 변경하려면 다음을 추가하십시오.

plt.yscale('log',basey=2)
# where basex or basey are the bases of log


답변

나는 이것이 일부 주제가 아니었다는 것을 알고있다. 일부 의견은 이것이 ax.set_yscale('log')“가장 적은”해결책이라고 언급 했기 때문에 반박이 나올 수 있다고 생각했다. ax.set_yscale('log')히스토그램 및 막대 플롯에는 사용하지 않는 것이 좋습니다 . 내 버전 (0.99.1.1)에서 렌더링 문제가 발생합니다.이 문제가 얼마나 일반적인지 잘 모르겠습니다. 그러나 bar와 hist에는 y-scale을 log로 설정하기위한 선택적 인수가 있습니다.

참조 :
http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.bar

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


답변

그래서 당신이 내가 종종 (ipython에서 많이 사용하는 것처럼) 정교하지 않은 API를 사용한다면, 이것은 단순히

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

이것이 간단한 답변을 찾는 데 도움이되기를 바랍니다. :).


답변

아래 코드를 사용할 수 있습니다 :

np.log(df['col_whose_log_you_need']).iplot(kind='histogram', bins=100,
                                   xTitle = 'log of col',yTitle ='Count corresponding to column',
                                   title='Distribution of log(col_whose_log_you_need)')