Python을 이용한 google chart

stat_pitfall WordPress.com 에서 제공하는 페이지 뷰 통계 플러그인을 사용하고 있는데, 이 플러그인의 문제는 이런 통계 출력이다. 그래프 출력 부분인데,  왼쪽 아래를 보면 확인할 수 있지만 시작점이 0이 아니다. 그래서 실제로는 큰 의미가 없는 변동폭이 그보다 훨씬 큰 무언가인 것처럼 보일 수 있다.

위에 제시한 그래프에서는 이런 통계적인 착시 효과가 크지 않지만 – 그래프 최대값인 360에 비해 0에 상당히 가까운 60이 최저값이니 – 만약 이게 굉장히 안정적인 그래프라서 380 ~ 400 사이를 진동한다거나 하면 400이란 값에 비해 매우 작은 20정도이 값(5%) 변화가 그래프 전체의 변화처럼 보일 수도 있게 된다.

사실 이게 중요한게 아니고(…), 그런 효과를 그래프로 보여줄까 했는데, 실제로 저 플러그인은 내가 조작(…)할 수가 없으니 예전에 포스팅했던 Google Chart API를 써서 그래프를 그리려고 했다. 여기서 문제,

  • 구글 차트 API는 굉장히 단순한 값 범위만 받아들인다 (0~100.0, 0~63 or 0~4095)
  • 구글 차트 API는 (이 경우에는 문제가 안되지만) 각 축의 스케일이 선형인 경우만 가정한다 (log 스케일 같은걸 모름)
  • 구글 차트 API는 데이터를 특정 표현으로만 받아들인다 (데이터 표현도 그렇고 URI 형태도 그렇고)

…같은게 있어서 뭔가 약간 더 쉽게 쓸 수 없을까 해서 Google 님에게 물어봤더니 Python Google Chart라는 python으로 작성된 Google API 래퍼;wrapper 라이브러리를 하나 알려주더라. 이 라이브러리는 주어진 데이터들에 대해서 구글 차트 API에서 제공하는 그래프 형태들을 각각 그려줄 수 있게 되어 있다. 덤으로 축의 레이블 표시를 지정한다거나 색이나 URI의 생성, 혹은 생성된 URI를 자동으로 파일로 저장하는 기능 같은 것을 가지고 있다.

그렇지만 이 라이브러리도 뭔가 마무리가 부족하다. 문서화가 부족한 것이야 소스가 공개되어 있으니 어떻게 해보겠는데, 위에서 말한 것 처럼 데이터 범위가 3가지 중 하나를 고르는 문제가 생기는데 이걸 지정할 수도 없고, 이에 대한 고려도 부족하다.

만약 데이터 인코딩의 최대값은 일렬로 쓰면,

Simple data encoding(64까지) < Text data encoding(100.0까지) < Extended data encoding(4095까지)

이렇게 표현되게 되는데 저 중 text data encoding, extended data encoding 사이에 주어진 데이터 값들 중 최대값이 있으면, 그래프 전체의 공간을 활용하지 못하고 밑 부분의 작은 공간에만 값들을 표현하게 된다 -_-;;

즉, 100~360 사이인 데이터들을 사용해서 그리면 이런 애가 나온다.

stat_zero

<바닥에 착 달라붙어 있는 그래프>

그리고 축에 대한 레이블도 지정된 값을 정규화;normalize해서 맞춰주는게 아니라, 축 전체의 최소/최대 값에 대한 것으로 인식한다 -_-;; (개인적으론 데이터 값을 정규화해서 그려주고 + 그에 따라 레이블도 맞춰줄것이라 믿었다)

뭐 이런 점이 보충되면 쓸만할 것 같긴한데, 지금은 단순히 주어진 데이터를 그려주는 수준이라서 – 물론 옵션 관리나 URI 생성/URI에 해당하는 이미지 다운로드등은 훌륭하지만 – 아직은 쓰기 좀 괴로운 라이브러리인 것 같다.

이 기회에 하나 만들까하는 생각이 마구마구 들기 시작했다. (저 코드를 고치서 패치를 내는 것도 좀 생각해봤지만, 그러기엔 라이브러리 자체가 이미 어느 정도 고정되서 힘들 것 같다)

ps. 그렇지만 생각만하고 있으면 전번에 WLW용 코드 삽입 플러그인 없다고 괴로워했는데 그에 해당하는 플러그인을 누가 만들어 버릴지도 모른다 – 현재 VS2005에서 복사해다 붙이는 기능을 제공하는 플러그인이 나온 상태.

Published by

rein

나는 ...

7 thoughts on “Python을 이용한 google chart”

  1. Pingback: blog/Draco
  2. 저런 식으로 구글 차트 위에 JS로 추가적인 정보를 전달해주는 것도 괜찮겠군요. 굳이 플래쉬를 쓰지 않아도 – 제작자 입장에선 좀 노가다일지 모르지만 – 검색엔진이 인식할 수 있는 정보(구글 차트의 URI)와 인간이 인식할 수 있는 정보(차트와 JS)가 둘 다 있으니 꽤 쓰기 좋아질 것 같습니다.

  3. URI에 해당하는 이미자 다운로드등은….

    원로 가수 이미자씨를 다운로드 하시려는 듯

  4. 곧 고쳐질 것 같은 부분이니 어찌어찌 되지 않을까합니다.
    CJK안되면 야후재팬이나 바이두가 저런걸 만들어버릴지도 모르는데 구글이 분발좀하겠죠(…)

    D.L / …이놈이 -_-

  5. 아하 그렇군요. 한동안 잊고 있었는데 맘에 드는 상태로 업데이트가 되었군요.
    정보 감사합니다 :)

Leave a Reply