python matplotlib绘制散点密度图

数据预处理

两幅影像值,含有NAN值和异常值。因此需要先剔除NAN和不符合条件的像元值。然后随机抽取10000个点拟合并绘图。

在此省略数据处理和拟合的部分,直接上绘图关键代码。

绘图关键代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import matplotlib.pyplot as plt
from scipy.stats import gaussian_kde
from mpl_toolkits.axes_grid1 import make_axes_locatable

xy = np.vstack([x,y])
z = gaussian_kde(xy)(xy)
idx = z.argsort()
x, y, z = x[idx], y[idx], z[idx]

fig, ax = plt.subplots(figsize=(7,5),dpi=100)
 
scatter = ax.scatter(x,y,marker='o',c=z,edgecolors='',s=15,label='LST'
                     ,cmap='Spectral_r')

divider = make_axes_locatable(ax)
cax = divider.append_axes("right", size="5%", pad=0.1)
cbar = fig.colorbar(scatter, cax=cax, label='frequency')

图片替换文本