시계열 플롯 시작했습니다~파이썬편~
소개
이 기사는 MicroAd Advent Calendar 2019의 22 일째 기사입니다.
하고 싶은 일
로그 데이터를 시각화할 때 시계열 플롯은 매우 유용한 수단입니다.
지금까지는 가로축의 일자를 적당히 숫자로 옮겨 플롯하고 도망 온, 그런 인생을 보내 왔습니다.
그러나 지금은 다릅니다. 가로축을 시계열로 하여 잘 플롯할 수 있게 되었습니다!
그래서 그 이야기를 비망록으로 정리하고 싶습니다.
여기서 작성한 그래프는 최소한의 옵션만 사용하고 있습니다.
방법
matplotlib.dates
를 사용하면 좋은 느낌으로 플롯할 수 있습니다.
코드 예제는 다음과 같습니다.
매일
import io
import pandas as pd
import matplotlib.dates as mdates
import matplotlib.pyplot as plt
from pandas.plotting import register_matplotlib_converters
register_matplotlib_converters()
def main():
data = """date,value
2018-12-01,15
2018-12-02,30
2018-12-03,25
2018-12-04,18
2018-12-05,9
2018-12-06,22
2018-12-07,34
2018-12-08,33
2018-12-09,28
2018-12-10,22
2018-12-11,26
2018-12-12,31"""
df = pd.read_csv(io.StringIO(data), parse_dates=[0])
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
ax.plot(df['date'], df['value'])
##以下をカスタマイズする
daysFmt = mdates.DateFormatter('%Y-%m-%d')
ax.xaxis.set_major_formatter(daysFmt)
fig.autofmt_xdate()
plt.show()
if __name__ == '__main__':
main()
이 코드로 완성된 그림은 다음과 같습니다.
조금 표시 방법을 바꿀 때는,
daysFmt = mdates.DateFormatter('%Y-%m-%d')
여기를 괴롭히면 괜찮습니다.
daysFmt = mdates.DateFormatter('%m/%d')
위와 같이 바꾸면 x축 레이블이 아래와 같이 표시됩니다.
일시마다
데이터를 조금 바꾸어 일시마다 해 봅니다.
import io
import pandas as pd
import matplotlib.dates as mdates
import matplotlib.pyplot as plt
from pandas.plotting import register_matplotlib_converters
register_matplotlib_converters()
def main():
data = """date,value
2018-12-01 00,15
2018-12-01 01,30
2018-12-01 02,25
2018-12-01 03,18
2018-12-01 04,9
2018-12-01 05,22
2018-12-01 06,34
2018-12-01 07,33
2018-12-01 08,28
2018-12-01 09,22
2018-12-01 10,26
2018-12-01 11,31"""
df = pd.read_csv(io.StringIO(data), parse_dates=[0])
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
ax.plot(df['date'], df['value'])
##以下をカスタマイズする
daysFmt = mdates.DateFormatter('%m/%d %H:%M')
ax.xaxis.set_major_formatter(daysFmt)
fig.autofmt_xdate()
plt.show()
if __name__ == '__main__':
main()
얻어진 도면은 이하와 같다.
눈금의 빈도 변경
눈금의 빈도를 변경하려면 다음 두 줄을 추가합니다.
daysLoc = mdates.HourLocator(byhour=None, interval=3, tz=None)
ax.xaxis.set_major_locator(daysLoc)
이것으로 눈금의 빈도가 바뀝니다.
상당히 외로운 그림이 되어 버렸습니다.
이번에는 interval
로 설정했지만 interval
옵션을 삭제하고 byhour=range(2, 12, 3)
로 설정해도 정확히 같은 결과를 얻을 수 있습니다.
여기서 사용한 HourLocater
이외에도 MonthLocator, WeekdayLocator, DayLocator, MonthLocator, MinuteLocator, SecondLocator
등 많이 있다고 합니다.
축 라벨 회전
축 라벨이 너무 길어 튀어 버린다! 그렇다면 회전시킬 수 있습니다.
다음 두 줄을 추가하면 가능합니다.
labels = ax.get_xticklabels()
plt.setp(labels, rotation=45)
얻어진 그림은 이대로.
확실히 라벨의 각도가 대체되어 있는지 확인할 수 있습니다.
마지막으로
자신이 시계열 플롯할 때 필요한 최소한의 옵션을 정리했습니다.
상황에 따라 더 이해하기 쉬운 그래프를 작성하십시오!
시각화가 가능했기 때문에 다음은 시계열 해석입니다 ...
참고 자료
matplotlib.dates (공식 문서)
matplotlib에서 시계열 데이터를 플롯 할 때 축 설정 + 덤
파이썬 matplotlib 시계열 그래프 (시간축 설정)
matplotlib.dates에서 시계열 데이터 그래프의 축 눈금 설정하기
Reference
이 문제에 관하여(시계열 플롯 시작했습니다~파이썬편~), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/jeta_taka/items/9e6b8c7c0fe1a86e2ae9
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
로그 데이터를 시각화할 때 시계열 플롯은 매우 유용한 수단입니다.
지금까지는 가로축의 일자를 적당히 숫자로 옮겨 플롯하고 도망 온, 그런 인생을 보내 왔습니다.
그러나 지금은 다릅니다. 가로축을 시계열로 하여 잘 플롯할 수 있게 되었습니다!
그래서 그 이야기를 비망록으로 정리하고 싶습니다.
여기서 작성한 그래프는 최소한의 옵션만 사용하고 있습니다.
방법
matplotlib.dates
를 사용하면 좋은 느낌으로 플롯할 수 있습니다.
코드 예제는 다음과 같습니다.
매일
import io
import pandas as pd
import matplotlib.dates as mdates
import matplotlib.pyplot as plt
from pandas.plotting import register_matplotlib_converters
register_matplotlib_converters()
def main():
data = """date,value
2018-12-01,15
2018-12-02,30
2018-12-03,25
2018-12-04,18
2018-12-05,9
2018-12-06,22
2018-12-07,34
2018-12-08,33
2018-12-09,28
2018-12-10,22
2018-12-11,26
2018-12-12,31"""
df = pd.read_csv(io.StringIO(data), parse_dates=[0])
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
ax.plot(df['date'], df['value'])
##以下をカスタマイズする
daysFmt = mdates.DateFormatter('%Y-%m-%d')
ax.xaxis.set_major_formatter(daysFmt)
fig.autofmt_xdate()
plt.show()
if __name__ == '__main__':
main()
이 코드로 완성된 그림은 다음과 같습니다.
조금 표시 방법을 바꿀 때는,
daysFmt = mdates.DateFormatter('%Y-%m-%d')
여기를 괴롭히면 괜찮습니다.
daysFmt = mdates.DateFormatter('%m/%d')
위와 같이 바꾸면 x축 레이블이 아래와 같이 표시됩니다.
일시마다
데이터를 조금 바꾸어 일시마다 해 봅니다.
import io
import pandas as pd
import matplotlib.dates as mdates
import matplotlib.pyplot as plt
from pandas.plotting import register_matplotlib_converters
register_matplotlib_converters()
def main():
data = """date,value
2018-12-01 00,15
2018-12-01 01,30
2018-12-01 02,25
2018-12-01 03,18
2018-12-01 04,9
2018-12-01 05,22
2018-12-01 06,34
2018-12-01 07,33
2018-12-01 08,28
2018-12-01 09,22
2018-12-01 10,26
2018-12-01 11,31"""
df = pd.read_csv(io.StringIO(data), parse_dates=[0])
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
ax.plot(df['date'], df['value'])
##以下をカスタマイズする
daysFmt = mdates.DateFormatter('%m/%d %H:%M')
ax.xaxis.set_major_formatter(daysFmt)
fig.autofmt_xdate()
plt.show()
if __name__ == '__main__':
main()
얻어진 도면은 이하와 같다.
눈금의 빈도 변경
눈금의 빈도를 변경하려면 다음 두 줄을 추가합니다.
daysLoc = mdates.HourLocator(byhour=None, interval=3, tz=None)
ax.xaxis.set_major_locator(daysLoc)
이것으로 눈금의 빈도가 바뀝니다.
상당히 외로운 그림이 되어 버렸습니다.
이번에는 interval
로 설정했지만 interval
옵션을 삭제하고 byhour=range(2, 12, 3)
로 설정해도 정확히 같은 결과를 얻을 수 있습니다.
여기서 사용한 HourLocater
이외에도 MonthLocator, WeekdayLocator, DayLocator, MonthLocator, MinuteLocator, SecondLocator
등 많이 있다고 합니다.
축 라벨 회전
축 라벨이 너무 길어 튀어 버린다! 그렇다면 회전시킬 수 있습니다.
다음 두 줄을 추가하면 가능합니다.
labels = ax.get_xticklabels()
plt.setp(labels, rotation=45)
얻어진 그림은 이대로.
확실히 라벨의 각도가 대체되어 있는지 확인할 수 있습니다.
마지막으로
자신이 시계열 플롯할 때 필요한 최소한의 옵션을 정리했습니다.
상황에 따라 더 이해하기 쉬운 그래프를 작성하십시오!
시각화가 가능했기 때문에 다음은 시계열 해석입니다 ...
참고 자료
matplotlib.dates (공식 문서)
matplotlib에서 시계열 데이터를 플롯 할 때 축 설정 + 덤
파이썬 matplotlib 시계열 그래프 (시간축 설정)
matplotlib.dates에서 시계열 데이터 그래프의 축 눈금 설정하기
Reference
이 문제에 관하여(시계열 플롯 시작했습니다~파이썬편~), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/jeta_taka/items/9e6b8c7c0fe1a86e2ae9
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
import io
import pandas as pd
import matplotlib.dates as mdates
import matplotlib.pyplot as plt
from pandas.plotting import register_matplotlib_converters
register_matplotlib_converters()
def main():
data = """date,value
2018-12-01,15
2018-12-02,30
2018-12-03,25
2018-12-04,18
2018-12-05,9
2018-12-06,22
2018-12-07,34
2018-12-08,33
2018-12-09,28
2018-12-10,22
2018-12-11,26
2018-12-12,31"""
df = pd.read_csv(io.StringIO(data), parse_dates=[0])
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
ax.plot(df['date'], df['value'])
##以下をカスタマイズする
daysFmt = mdates.DateFormatter('%Y-%m-%d')
ax.xaxis.set_major_formatter(daysFmt)
fig.autofmt_xdate()
plt.show()
if __name__ == '__main__':
main()
daysFmt = mdates.DateFormatter('%Y-%m-%d')
daysFmt = mdates.DateFormatter('%m/%d')
import io
import pandas as pd
import matplotlib.dates as mdates
import matplotlib.pyplot as plt
from pandas.plotting import register_matplotlib_converters
register_matplotlib_converters()
def main():
data = """date,value
2018-12-01 00,15
2018-12-01 01,30
2018-12-01 02,25
2018-12-01 03,18
2018-12-01 04,9
2018-12-01 05,22
2018-12-01 06,34
2018-12-01 07,33
2018-12-01 08,28
2018-12-01 09,22
2018-12-01 10,26
2018-12-01 11,31"""
df = pd.read_csv(io.StringIO(data), parse_dates=[0])
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
ax.plot(df['date'], df['value'])
##以下をカスタマイズする
daysFmt = mdates.DateFormatter('%m/%d %H:%M')
ax.xaxis.set_major_formatter(daysFmt)
fig.autofmt_xdate()
plt.show()
if __name__ == '__main__':
main()
daysLoc = mdates.HourLocator(byhour=None, interval=3, tz=None)
ax.xaxis.set_major_locator(daysLoc)
labels = ax.get_xticklabels()
plt.setp(labels, rotation=45)
자신이 시계열 플롯할 때 필요한 최소한의 옵션을 정리했습니다.
상황에 따라 더 이해하기 쉬운 그래프를 작성하십시오!
시각화가 가능했기 때문에 다음은 시계열 해석입니다 ...
참고 자료
matplotlib.dates (공식 문서)
matplotlib에서 시계열 데이터를 플롯 할 때 축 설정 + 덤
파이썬 matplotlib 시계열 그래프 (시간축 설정)
matplotlib.dates에서 시계열 데이터 그래프의 축 눈금 설정하기
Reference
이 문제에 관하여(시계열 플롯 시작했습니다~파이썬편~), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/jeta_taka/items/9e6b8c7c0fe1a86e2ae9
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(시계열 플롯 시작했습니다~파이썬편~), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/jeta_taka/items/9e6b8c7c0fe1a86e2ae9텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)