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에서 복사해다 붙이는 기능을 제공하는 플러그인이 나온 상태.

Jinuk Kim
Jinuk Kim

SW Engineer / gamer / bookworm / atheist / feminist

Articles: 935

7 Comments

  1. Draco Counter 3.0 with Google Chart API…

    구글 Chart API를 사용한 Draco 카운터 새버전!!1. 소개Draco Counter는 태터툴스와 텍스트큐브의 방문자 숫자 기록을 바탕으로 그래프를 그려주며, 그래프에 마우스 포인터를 가져가 해당 날짜의 방…

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

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

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

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

    D.L / …이놈이 -_-

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

Leave a Reply