더북(TheBook)

데이터를 표준 그래픽스로 필터링하기 표준 그래픽스를 이용한 가장 간단한 프로그램 중 하나는 표준 입력에서 가져온 데이터를 필터링해 점을 찍는 프로그램일 것이다. [프로그램 1.5.5](plotfilter.py)는 이런 필터를 보여준다. (x, y) 좌표로 정의된 일련의 점들을 읽어 각 해당 위치에 점을 찍는다. 이 프로그램은 표준 입력에서 읽은 처음 네 개의 숫자를 가장자리 영역으로 설정하는 관례를 따르고 있으므로, 모든 숫자를 확인하고 나서 배율을 결정하는 부수적인 과정이 필요 없다(이런 데이터 파일은 보통 이와 같은 방식의 관례를 따른다).

여러 점을 찍어서 이와 같은 그림 형태로 만들면 지금까지 표준 출력 스트림으로 생성해왔던 어떠한 형태보다 훨씬 더 함축적이고 이해하기 쉽게 정보를 표현할 수 있다. plotfilter.py로 생성한 이미지를 보면 좌표를 숫자로 표시했을 때보다 도심의 인구 밀도 성질을 눈으로 확인하기 훨씬 쉽다. 물리적인 세계를 표현하는 데이터를 처리할 때는 언제나 시각적인 그림이 의미를 가장 잘 전달한다. [프로그램 1.5.5]를 보면 이런 그림을 생성하는 게 얼마나 쉬운지 알 수 있다.

함수 그래프 그리기 stddraw는 실험 데이터나 수학 함수 그래프를 그릴 때도 사용할 수 있다. 예를 들어 [0. 𝜋] 범위에서 y = sin(4x) + sin(20x) 함수의 그래프를 그리는 경우를 생각해보자. 그래프를 그리는 작업은 샘플링의 전형적인 예이다. 이 범위 안에는 점이 무수히 많이 있으므로, 진정한 그래프를 그리려면 무수히 많은 점에 함수를 적용한 값을 계산해야 한다. 이때 x축에서 일련의 값을 선택하고(샘플링), 선택된 값에 함수를 적용해 y 값을 계산한다. 그러고 나서 점들을 선분으로 연결하는 방법을 불연속 선형 보간법(piecewise linear interpolation)이라고 한다. 불연속 선형 보간법을 사용할 때 가장 간단한 방법은 x 값들의 간격을 동일하게 만드는 것이다. 먼저 샘플 개수를 미리 결정하고, x축의 범위를 샘플 개수로 나눠, x 좌표들을 구한다. 그래프로 표시할 좌표가 캔버스 안에 들어가도록 보장하기 위해, x축의 범위와 이 범위 안에서 y의 최댓값과 최솟값이 y의 범위에 들어가도록 캔버스 영역을 설정한다. [프로그램 1.5.6](functiongraph.py)은 이 과정을 파이썬으로 구현한다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.