我在影像上方繪制了一個熱圖(如影像鏈接1所示),帶有高斯濾波器和歸一化資料。主要問題是 y 軸上沒有低于 92 的值,因此繪圖不是從 (0,0) 開始,而是從 (0,92) 開始。因此,當我將兩張圖片(熱圖和背景影像)放在一起時,圖表上有一個突然的切割(如第二個鏈接所示,沒有背景的熱圖在哪里)。
那么,如何擴展熱圖上的軸,使其從 (0,0) 開始?
下面是我目前用來繪制兩個影像的代碼。謝謝!
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
from scipy.ndimage.filters import gaussian_filter
import matplotlib.colors as mcolors
from sklearn.preprocessing import normalize
x = df['x_data']
y = df['y_data']
heatmap, xedges, yedges = np.histogram2d(x, y, bins = [800,600])
extent = [0, xedges[-1], yedges[0], yedges[-1]]
heatmap = normalize(heatmap)
heatmap = gaussian_filter(heatmap, 16)
colors = [(1,1-c,0,c) for c in np.linspace(0,1,100)]
cmapred = mcolors.LinearSegmentedColormap.from_list('mycmap', colors, N=5)
map_img = mpimg.imread('dir/to/background/image.png')
fig, ax = plt.subplots(figsize=(16.1, 9.1))
plt.imshow(map_img, extent=[0, 800, 0, 600], cmap = 'Greys_r')
plt.imshow(heatmap.T, extent = extent, origin = 'lower', cmap = cmapred, alpha = 0.7)
plt.ylim([0,600])
plt.xlim([0,800])
plt.show()
熱圖 背景圖片:https : //imgur.com/2vX6Bw6
僅熱圖的影像:https : //imgur.com/axMe7K7
uj5u.com熱心網友回復:
您可以手動將行添加到熱圖中。也許更容易嘗試明確設定直方圖箱?
bins=[np.arange(0, 800, 1), np.arange(0, 600, 1)]
heatmap, xedges, yedges = np.histogram2d(x, y, bins=bins)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/406731.html
標籤:
上一篇:通過在沒有for回圈的情況下提取DatetimeIndex的時間,在一個圖上繪制每一天
下一篇:如何為資料框中的實際值分配名稱
