使用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/