1. 程式人生 > 其它 >使用Python繪製點選圖、熱圖

使用Python繪製點選圖、熱圖

via: http://blog.csdn.net/wenyusuran/article

pyHeatMap是一個使用Python生成熱圖的庫,基本程式碼是我一年多之前寫的,最近把它從專案中摳出來做成一個獨立的庫並開源。(https://github.com/oldj/pyheatmap)

可以直接下載原始碼安裝最新的版本,也可以通過pip或easy_install安裝穩定的釋出版:

12345

pip install pyheatmap # 或者 easy_install pyheatmap

pyHeatMap依賴於PIL庫,使用之前需要先確保你的環境中已經安裝了PIL。使用方法很簡單,比如:

# -*-coding:utf-8-*-

import urllibfrom pyheatmap.heatmap 
import HeatMap
def main():    
data = []    # download test data    url="https://raw.github.com/oldj/pyheatmap/master/examples/test_data.txt"    sdata = urllib.urlopen(url).read().split("n")
    data = []
    for ln in sdata:
        a = ln.split(",")
            if len(a) != 2:
                        continue        a = [int(i) 
                        for i in a]
        data.append(a)

    hm = HeatMap(data)
    hm.clickmap(save_as="d://python/hit.png")
    hm.heatmap(save_as="d://python/heat.png")
    if __name__ == "__main__":
    main()

輸入的資料為形如 [[123, 234], [429, 82], [220, 535], …] 這樣的列表或元組,可以把它理解為一組平面座標。

目前這個庫可以生成兩種圖片:點選圖、熱圖。

點選圖效果如下:

熱圖效果如下:

繪製圖片時,還可以指定一個底圖,這個底圖可以是任意影象,也可以是另一個點選圖。比如:

12345678910

defexample2(): data_1=loadDataFromFile("test_data.txt") data_2=loadDataFromFile("test_data2.txt") hm=HeatMap(data_1) hit_img=hm.clickmap() hm2=HeatMap(data_2) hit_img2=hm2.clickmap(base=hit_img,color=(0,0,255,255)) hit_img2.save("hit2.png")

生成的圖片形如:

關於繪製熱圖中用到的方法,可以參考我以前的文章,比如

關於網頁點選熱區圖、

http://oldj.net/article/page-heat-map/

關於熱區圖的色盤

http://oldj.net/article/heat-map-colors/

其中熱圖繪製中還用到了

Bresenham畫圓演算法

http://oldj.net/article/bresenham-algorithm/