首頁>技術>

在我們想要對不同變數進行判斷的時候,會分析其中的之間的聯絡。這種理念同樣也被用在例項生活中,最常見到的是做一個地理的熱力圖。很多人對畫熱力圖的方法不是很清楚,我們可以先裝好相關的工具,瞭解一些使用引數,然後在例項中進行畫熱力圖的例項體驗,下面就來看看具體的方法吧。

1.匯入相關的packages

import seaborn as sns

%matplotlib inline

sns.set(font_scale=1.5)

2.引數

vmax:設定顏色帶的最大值

vmin:設定顏色帶的最小值

cmap:設定顏色帶的色系

center:設定顏色帶的分界線

annot:是否顯示數值註釋

fmt:format的縮寫,設定數值的格式化形式

linewidths:控制每個小方格之間的間距

linecolor:控制分割線的顏色

cbar_kws:關於顏色帶的設定

mask:傳入布林型矩陣,若為矩陣內為True,則熱力圖相應的位置的資料將會被遮蔽掉(常用在繪製相關係數矩陣圖)

3.例項

用Python生成heatmap比較簡單,匯入googlmap然後把經緯度plot在地圖上就可以了。最後把heatmap生成為一個html檔案,可以放大和縮小。

import gmplot # plot the locations on google map

import numpy as np # linear algebra

import pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv())

import matplotlib.pyplot as plt # data visualization

import seaborn as sns # data visualization

df = pd.read_csv("data.csv")

df = pd.DataFrame(df)

df_td = pd.read_csv("datacopy.csv")

df_td = pd.DataFrame(df_td)

# print df.dtypes

print (df.shape)

print (df_td.shape)

def plot_heat_map(data, number):

latitude_array = data['INTPTLAT'].values

latitude_list = latitude_array.tolist()

print(latitude_list[0])

Longitude_array = data['INTPTLONG'].values

longitude_list = Longitude_array.tolist()

print(longitude_list[0])

# Initialize the map to the first location in the list

gmap = gmplot.GoogleMapPlotter(latitude_list[0], longitude_list[0], 10)

# gmap.scatter(latitude_list, longitude_list, edge_width=10)

gmap.heatmap(latitude_list, longitude_list)

# Write the map in an HTML file

# gmap.draw('Paths_map.html')

gmap.draw('{}_Paths_map.html'.format(number))

plot_heat_map(df,'4')

內容擴充套件:

例項擴充套件1

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

from pyheatmap.heatmap import HeatMap

import numpy as np

N = 10000

X = np.random.rand(N) * 255 # [0, 255]

Y = np.random.rand(N) * 255

data = []

for i in range(N):

tmp = [int(X[i]), int(Y[i]), 1]

data.append(tmp)

heat = HeatMap(data)

heat.heatmap(save_as="2.png") #熱圖

例項擴充套件2

import matplotlib.pyplot as plt

import matplotlib.cm as cm

from matplotlib.colors import LogNorm

import numpy as np

x, y = np.random.rand(10), np.random.rand(10)

z = (np.random.rand(9000000)+np.linspace(0,1, 9000000)).reshape(3000, 3000)

plt.imshow(z+10, extent=(np.amin(x), np.amax(x), np.amin(y), np.amax(y)),

cmap=cm.hot, norm=LogNorm())

plt.colorbar()

plt.show()

24
最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 懶人學Python-邊學邊練-字串篇