파이 차트(Pie Chart)는 원을 그리고 그 안쪽을 섹터별로 나눠서 각 항목별 비율을 도식화하여 나타내는 그래픽 표출 방식입니다. IDL이 자체적으로 여러가지 그래픽 표출 방식들을 지원하고 있기는 하지만, 이러한 파이 차트 형태의 표출 기능은 지원하고 있지 않은 것이 사실입니다. 그래서 IDL에서 파이 차트를 그리는 방법을 소개하는 게시물을 제가 예전에 올린 바 있습니다. 사실 여기서는 파이 차트를 그리는 프로그램을 제가 하나 만들어서 이를 사용하는 방법 및 예제를 소개하였습니다. 따라서 이 게시물에서 소개된 방법을 이용해도 됩니다.
그런데 이번에 IDL 9.2에서 파이썬 기능을 내장하게 되면서 이제는 IDL에서 파이썬의 파이 차트 표출 기능을 활용하는 것이 가능해졌습니다. 따라서 그 방법을 소개해보고자 합니다. 일단 오늘 소개할 내용은 게시물을 올리는 날짜(2025년 9월 1일) 기준으로는 IDL 9.2 윈도우즈 버전에서만 적용이 가능합니다. Mac OS 및 Linux용 IDL 9.2의 경우는 얼마전에 관련 게시물에서 언급했던 내장 파이썬 사용 불가 이슈가 아직 존재하는 상황인데, 아마도 차후 이 문제가 해결된 후에는 적용이 가능할 것으로 예상합니다. 어쨌든 IDL 9.2에서 파이썬 기능을 이용하여 파이 차트 그림을 표출하는 예제를 지금부터 살펴보겠습니다.
먼저 파이썬의 파이 차트 표출 기능을 사용하려면 Matplotlib 라이브러리의 pyplot 모듈을 사용하는 것이 필요합니다. 다만 IDL에 내장된 파이썬에는 Matplotlib 라이브러리가 포함되어 있지 않습니다. 따라서 설치를 따로 해줘야 하는데 방법은 간단합니다. 다음과 같이 PyUtils 클래스의 PipInstall 메서드를 이용하여 Matplotlib 라이브러를 설치하면 됩니다.
IDL> PyUtils.PipInstall, 'Matplotlib'
이러한 명령을 실행하면 이제 IDL의 내장 파이썬에서도 Matplotlib 라이브러리를 사용할 수 있게 됩니다. 그러면 파이 차트에 반영될 데이터들을 먼저 정의해봅시다. 그 과정은 다음과 같습니다.
labels = ['Item 1', 'Item 2', 'Item 3', 'Item 4', 'Other']
sizes = [17.6, 28.4, 36.9, 9.3, 7.8]
colors = ['yellowgreen', 'gold', 'lightskyblue', 'lightcoral', 'khaki']
explode = [0, 0, 0.1, 0, 0] ; "explode" the 3rd slice
여기서는 파이 차트에 반영될 항목들을 위와 같이 Item 1부터 4까지 및 기타(Other)까지 총 5개로 정의하고 항목별 이름, 퍼센티지 값, 색상에 해당되는 배열들인 labels, sizes, colors를 정의하였습니다. 그런데 colors 배열의 내용을 보면 색상의 명칭들이 IDL에서 사용하던 것과는 좀 다릅니다. 그 이유는 colors 배열은 나중에 파이썬의 pyplot 모듈의 pie 함수의 COLORS 키워드에 인수로 투입될 예정이기 때문에 파이썬에서 유효한 색상 명칭으로 맞춰야 하기 때문입니다. 그리고 explode라는 배열의 값들은 파이 차트 그림에서 특정한 항목(여기서는 세번째 항목)에 대한 파이 조각(piece)이 살짝 떨어진 것처럼 보이게 할 목적으로 역시 나중에 pyplot 모듈의 pie 함수에 투입될 것입니다.
어쨌든 이와 같이 데이터들이 준비된 후에는 pyplot 모듈의 pie 함수를 사용하면서 위의 데이터들을 투입하면 됩니다. 그 과정은 다음과 같습니다.
plt = Python.Import('matplotlib.pyplot')
fig = plt.figure(figsize=[6, 6], facecolor=[0.9, 0.9, 0.9])
pie = plt.pie(sizes, explode=explode, $
labels=labels, colors=colors, $
autopct='%1.1f%%', /shadow, startangle=90)
위의 내용의 첫번째 줄에서는 먼저 Matplotlib 라이브러리의 pyplot 모듈을 불러오기 위하여 Python 클래스의 Import 메서드를 사용하였습니다. 그래서 이 내용에서 좌변의 plt는 IDL에서 생성된 파이썬 객체(Python Object)입니다. 그리고 이 내용은 파이썬 문법상으로 마치 "import matplotlib.pyplot as plt"를 실행하는 것과 동등하다고 보면 됩니다. 그 다음에는 plt 객체의 figure 함수를 사용하여 600x600 크기의 그래픽 창을 정의하고, 바로 이어서 pie 함수를 사용하면서 필요한 데이터들을 문법에 맞게 투입하였습니다. 물론 여기서 figure 및 pie 함수를 사용하는 문법은 IDL이 아닌 파이썬의 문법을 따른 것입니다. 그 다음에는 다음과 같이 그림 생성을 마무리하고 PNG 파일로 저장하면 됩니다.
void = plt.axis('equal')
void = plt.savefig('myplot.png')
여기까지의 과정에 의하여 얻은 파이 차트 그림의 모습은 다음과 같습니다.

이와 같이 IDL 9.2에서 내장 파이썬의 기능을 잘 활용하면 기존에 IDL만으로는 하지 못했던 작업들도 할 수 있게 됩니다. 이와 같이 IDL에서 파이썬 기능을 사용하는 작업 방식은 얼마든지 다양한 용도로 활용될 수 있을 것이므로 아마 향후에도 이러한 방식의 예제들을 가끔 소개하게 될 것 같습니다.
그리고 위의 예제를 잘 보면 IDL의 문법으로 정의된 데이터(여기서는 labes, sizes, colors, explode 등)가 파이썬 문법의 내용에 그대로 투입된 것이 눈에 띕니다. 사실 IDL 정의된 데이터가 파이썬 문법에 투입될 때에는 내부적으로는 일정한 규칙의 변환 과정을 거치게 됩니다. 즉 IDL과 파이썬 사이의 데이터 변환 규칙이라는 것이 존재한다는 뜻입니다. 이와 관련해서는 나중에 기회가 되면 따로 다뤄보도록 하겠습니다.
* 이 글이 도움이 되었다면 게시물에 대하여 공감 버튼(하트 모양) 클릭 및 블로그 구독도 해주시면 더 큰 힘이 됩니다. 감사합니다.
'IDL > Python in IDL' 카테고리의 다른 글
| 파이썬의 컬러테이블을 IDL에서 사용해보기 (0) | 2025.09.16 |
|---|---|
| 파이썬 기능을 사용하여 플롯(Plot) 그리기 (0) | 2025.09.08 |