보통 우리가 사용하는 matplotlib
와 같은 그래프 라이브러리들의 예제를 보면, 어레어로 입력값을 주고 단순히 띄우는 형태인데요. 가끔 파이썬을 사용하다보면, 그래프를 직접 그릴 일이 있습니다. 이번 포스팅에서는 matplotlib
를 활용해서 interactive graph, 즉 그래프를 마우스 클릭질을 통해 직접 그려보는 예제를 다뤄보도록 하겠습니다. 공식 matplotlib 설명 페이지도 잘 되어 있으니 참고하시면 됩니다.
Matplotlib
파이썬을 하는 사람이라면 알 수 밖에 없는 아주 유명한 라이브러리입니다. 기본적으로 그래프와 관련된 대부분의 기능을 지원합니다. 간단한 사용법은 인터넷에 너~무 많아서 생략하겠습니다.
Interactive Graph 그리는 예제
사용자가 직접 설정한 범위 내에서, 그래프에 마우스로 점을 찍어 그래프를 그려주는 예제입니다. matplotlib에서는 event handler을 제공하기 때문에 마우스 버튼 또는 키보드 이벤트 핸들링을 할 수 있습니다. 위에서 첨부한 공식 사이트에 가면 상세 내용을 확인할 수 있습니다.
전체 코드는 다음과 같습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | # -*- coding: utf-8 -*- import matplotlib.pyplot as plt fig, ax = plt.subplots(figsize=(15, 8)) plt.grid(True) plt.xlabel('x') plt.ylabel('y') plt.title('Interactive Plot') ax.set(xlim=[0, 50], ylim=[0, 50]) ax.set_aspect('auto', adjustable='box') xdata = [0] ydata = [0] line, = ax.plot(xdata, ydata) def add_point(event): if event.inaxes != ax: return # button 1: 마우스 좌클릭 if event.button == 1: x = event.xdata y = event.ydata xdata.append(x) ydata.append(y) line.set_data(xdata, ydata) plt.draw() # button 3: 마우스 우클릭 시 기존 입력값 삭제 if event.button == 3: xdata.pop() ydata.pop() line.set_data(xdata, ydata) plt.draw() # 마우스 중간버튼 클릭 시 종료하기 if event.button == 2: plt.disconnect(cid) plt.close() cid = plt.connect('button_press_event', add_point) plt.show() | cs |
코드는 크게 어렵지 않습니다. 마우스 클릭 버튼에 따라...
- 좌클릭: x, y List에 점 좌표를 추가
- 우클릭:
pop
을 통해 가장 최근의 점좌표를 제거 - 중앙버튼 클릭: 그래프 그리기 종료
Jupyter notebook에서 실행할 경우
아마 위 코드를 실행해도 interactive하지 않을 겁니다. 다음 코드 추가하시면 쥬피터 상에서도 그래프 그리는 이벤트 핸들링이 가능합니다.
%matplotlib notebook
'Developer > Python' 카테고리의 다른 글
[파이썬 셀레니움] 프라이탁 신제품을 실시간으로 확인하기1 (109) | 2020.09.03 |
---|---|
[Python] 구글번역 API를 통해 파워포인트, 엑셀 번역하기 (0) | 2020.09.03 |
[파이썬] Pyinstaller, cx_Freeze 사용법 (exe 파일 생성) (0) | 2020.07.29 |
[Python] 공적 마스크 API 활용하여 지도로 구현하기 (Folium 라이브러리 적용) (0) | 2020.03.16 |
Python 지도 라이브러리, Folium 사용법 (0) | 2020.01.04 |
댓글