EmacsでGoogle Chart

区分
Emacs
報告者

こんにちは、chibaです。
今回もネタがないのでEmacsで遊んでいたネタを。
Googleは、便利にグラフを書けるAPIであるGoogle Chart APIというのを提供しています。
URLを指定するだけで、グラフが書けたり、QRコードが書けたり色々便利なものですが、数値のリストからスタックされた棒グラフを書いてみようと思ったので、ちょっと遊んでみました。

(defun* gchart-stack-bar-chart-url (data &key (style :horizontal))
  (let ((len (length data)))
    (concat
     "http://chart.apis.google.com/chart?"
     "cht=b" (case style
               (:horizontal "hs")
               (otherwise "vs")) 
     "&chd=t:"
     (let* ((totals (mapcar (lambda (x)
                              (apply #'+ x))
                            data))
            (max (apply #'max totals))
            (to-string (lambda (x) (format "%s" x))))
       (mapconcat 
        to-string
        (mapcar 
         (lambda (x)
           (mapconcat
            to-string x ","))
         (apply #'mapcar*
                #'list
                (mapcar
                 (lambda (x) 
                   (mapcar
                    (lambda (y)
                      (format "%.1f"
                              (* (/ 100 max) y)))
                    x))
                 data)))
        "|"))
     "&chco=ff0000,00ff00,0000ff"
     "&chs=350x"
     (int-to-string (* len 28)))))
(let ((data '((10 20 30)
              (3 50 1)
              (1 2 3)
              (33 33 33)
              (5 6 7)
              (33 33 33)
              (3 3 9))))
  (browse-url (gchart-stack-bar-chart-url data)))

これで、

のようなグラフが書けます。
タイトルも付けられるようですが、飽きてしまいました
Emacs便利です。

トップページに戻る

技師部隊からの
お知らせ

【求人】エンジニア募集しています。

本頁の来客数
八十七万千百七十六名以上(計測停止中)

メンバー一覧

アクトインディ技師部隊員名簿

アクトインディ技師部元隊員

アクトインディへ

カテゴリー

アクトインディ

aaaa