import numpy as np
import matplotlib.pyplot as plt
# 设置斜率 k
k =2# 生成 x 值,可以是一个范围内的随机数
x = np.linspace(0,10,1000)# 生成对应的 y 值,按照 y = kx 的关系计算
y = k * x + np.random.normal(5,2,1000)# 添加一些随机噪声#核密度估计
xy = np.stack([x, y],axis=0)
z = stats.gaussian_kde(xy)(xy)
idx = z.argsort()#获取索引
x, y, z = x[idx], y[idx], z[idx]
fig,ax=plt.subplots(figsize=(7,6),dpi=300)
scatter=ax.scatter(x, y, marker='o', c=z, edgecolors=None,s=20, label='LST',cmap='Spectral_r')
cbar=plt.colorbar(scatter,shrink=1,orientation='vertical',label='colorarbar')# 绘制散点图
plt.xlabel('X')
plt.ylabel('Y')
plt.grid(True)
plt.show()
import numpy as np
from scipy import stats
# 创建一个包含二维数据的示例数组
data = np.random.randn(2,1000)# 使用 stats.gaussian_kde 进行核密度估计
kde = stats.gaussian_kde(data)# 生成一组用于绘制估计概率密度函数的点
x = np.linspace(min(data[0]),max(data[0]),100)
y = np.linspace(min(data[1]),max(data[1]),100)
X, Y = np.meshgrid(x, y)
positions = np.vstack([X.ravel(), Y.ravel()])
Z = np.reshape(kde(positions).T, X.shape)# 绘制估计的概率密度函数import matplotlib.pyplot as plt
plt.contourf(X, Y, Z, cmap='Blues')
plt.xlabel('X1')
plt.ylabel('X2')
plt.title('Kernel Density')
plt.colorbar()
plt.show()