본문 바로가기
카테고리 없음

파이썬과 PHP의 콜라보! PHP웹에서 그래프 그리기 ( Matplotlib - pyplot )

파이썬 웹서비스하면 장고(Django)가 유명하지요.

그런데 재미 있는 걸 알아 냈습니다.
파이썬과 PHP 가 만나면 PHP 에서 파이썬 그래프를 그릴수 있다는 걸 말이지요 :)

이건 엄청난건데요.
PHP 를 웹서비스를 하면서 파이썬도 할 수 있다는 거거든요.
원리는 간단합니다.

1) 파이썬에서 그래프를 그립니다.
2) 그래프를 stdout 로 출력합니다.
3) PHP에서 stdout로 출력한 내용을 받아옵니다.
4) base64 img 태그를 이용해 화면에 출력합니다.

거두절미 하고 바로 소스를 보겠습니다.

파이썬으로 그래프를 그리는 소스를 구성합니다.

pyplot.py

#!/usr/bin/python -u
import matplotlib.pyplot as plt
import sys

plt.rc('font', family='Malgun Gothic')

x = ['파이썬', 'PHP', '자바', 'C++', 'C#', 'GO']
y = [69, 80, 60, 50, 80, 20]

plt.bar(x, y, align='center', alpha=0.7, color='red')
plt.xticks(x)
plt.ylabel('수강생')
plt.title('제목')

#plt.show()
plt.savefig(sys.stdout)

php 로 파이썬을 실행하여 데이터를 받아오는 아래 소스를 구성합니다.

<?php
  // 파이썬을 실행하여 데이터를 받아오는 코드
  ob_start();
  passthru('python pyplot.py');
  $data = ob_get_contents();
  ob_end_clean();
?>
<!-- 받아온 데이터를 base64 이미지 방식으로 출력 -->
<img src="data:image/png;base64, <?=base64_encode($data)?>" />

그러면 이러한 결과 페이지를 PHP에서 확인할 수 있습니다. 와우~
장고 없이도 PHP와 파이썬을 합작해서 나올수 있는 산출물이라니,
웬지 내공이 하나 늘어난것 같습니다 :)