[PYTHON] Matplotlib로 2D 히트 맵 그리기
PYTHONMatplotlib로 2D 히트 맵 그리기
Matplotlib을 사용하여 2D 히트 맵을 플롯하려고합니다. 내 데이터는 각각 0에서 1 사이의 값을 갖는 nxnnnumpy 배열입니다. 따라서이 배열의 (i, j) 요소의 경우, (i, j) 좌표의 사각형을 내 히트 맵은 배열의 요소 값에 비례하는 색상을가집니다.
어떻게해야합니까?
해결법
-
==============================
1.interpolation = 'nearest'및 cmap = 'hot'매개 변수가있는 imshow () 함수는 원하는 것을 수행해야합니다.
interpolation = 'nearest'및 cmap = 'hot'매개 변수가있는 imshow () 함수는 원하는 것을 수행해야합니다.
import matplotlib.pyplot as plt import numpy as np a = np.random.random((16, 16)) plt.imshow(a, cmap='hot', interpolation='nearest') plt.show()
-
==============================
2.여기에 꽤 늦게 응답하지만 어쨌든 ... Seaborn은 많은 수작업을 처리하고 차트 측면에 그라디언트를 자동으로 그립니다.
여기에 꽤 늦게 응답하지만 어쨌든 ... Seaborn은 많은 수작업을 처리하고 차트 측면에 그라디언트를 자동으로 그립니다.
e.
import numpy as np import seaborn as sns import matplotlib.pylab as plt uniform_data = np.random.rand(10, 12) ax = sns.heatmap(uniform_data, linewidth=0.5) plt.show()
또는 정사각형 행렬의 왼쪽 / 오른쪽 삼각형의 위 / 아래를 그릴 수도 있습니다 (예 : 정사각형이며 대칭 인 상관 행렬). 따라서 모든 값을 플롯하면 어쨌든 중복 될 수 있습니다.
corr = np.corrcoef(np.random.randn(10, 200)) mask = np.zeros_like(corr) mask[np.triu_indices_from(mask)] = True with sns.axes_style("white"): ax = sns.heatmap(corr, mask=mask, vmax=.3, square=True, cmap="YlGnBu") plt.show()
희망이 도움이됩니다!
-
==============================
3.csv에서 수행하는 방법은 다음과 같습니다.
csv에서 수행하는 방법은 다음과 같습니다.
import numpy as np import matplotlib.pyplot as plt from scipy.interpolate import griddata # Load data from CSV dat = np.genfromtxt('dat.xyz', delimiter=' ',skip_header=0) X_dat = dat[:,0] Y_dat = dat[:,1] Z_dat = dat[:,2] # Convert from pandas dataframes to numpy arrays X, Y, Z, = np.array([]), np.array([]), np.array([]) for i in range(len(X_dat)): X = np.append(X,X_dat[i]) Y = np.append(Y,Y_dat[i]) Z = np.append(Z,Z_dat[i]) # create x-y points to be used in heatmap xi = np.linspace(X.min(),X.max(),1000) yi = np.linspace(Y.min(),Y.max(),1000) # Z is a matrix of x-y values zi = griddata((X, Y), Z, (xi[None,:], yi[:,None]), method='cubic') # I control the range of my colorbar by removing data # outside of my range of interest zmin = 3 zmax = 12 zi[(zi<zmin) | (zi>zmax)] = None # Create the contour plot CS = plt.contourf(xi, yi, zi, 15, cmap=plt.cm.rainbow, vmax=zmax, vmin=zmin) plt.colorbar() plt.show()
여기서 dat.xyz는 형식입니다.
x1 y1 z1 x2 y2 z2 ...
from https://stackoverflow.com/questions/33282368/plotting-a-2d-heatmap-with-matplotlib by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] 선언 된 것과 같은 순서로 클래스 속성을 읽는 방법? (0) | 2018.10.13 |
---|---|
[PYTHON] 주 번호에서 날짜 가져 오기 (0) | 2018.10.13 |
[PYTHON] 디버그 모드에서 pyspark를 어떻게 호출 할 수 있습니까? (0) | 2018.10.13 |
[PYTHON] 클래스 인스턴스를 추적하는 방법? (0) | 2018.10.13 |
[PYTHON] 파이썬 / NumPy 하위 배열의 첫 번째 항목 (0) | 2018.10.13 |