python画二维密度图
时间: 2023-08-30 16:05:30 浏览: 191
在Python中,可以使用matplotlib库来画二维密度图。以下是一个简单的例子:
```python
import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import kde
# 生成数据
x = np.random.normal(size=500)
y = np.random.normal(size=500)
# 使用scipy库中的kde函数计算密度
k = kde.gaussian_kde([x, y])
# 生成网格数据
xi, yi = np.mgrid[x.min():x.max():100j, y.min():y.max():100j]
zi = k(np.vstack([xi.flatten(), yi.flatten()]))
# 绘制密度图
plt.pcolormesh(xi, yi, zi.reshape(xi.shape), shading='gouraud')
plt.show()
```
这段代码会生成一个二维正态分布随机数,并使用kde函数计算密度,最后使用pcolormesh函数绘制密度图。你可以根据需要调整生成数据的方式和绘图参数以满足你的需求。
相关问题
用python画一个二维密度图应用实例
好的,以下是一个用Python绘制二维密度图的应用实例:
首先需要导入必要的库:
```python
import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import kde
```
然后生成一些随机数据:
```python
# 生成二维随机数据
x = np.random.normal(size=500)
y = np.random.normal(size=500)
```
接下来,使用kde库计算出密度:
```python
# 使用kde计算密度
k = kde.gaussian_kde([x,y])
xi, yi = np.mgrid[x.min():x.max():100j, y.min():y.max():100j]
zi = k(np.vstack([xi.flatten(), yi.flatten()]))
```
最后,使用matplotlib库绘制出密度图:
```python
# 绘制二维密度图
plt.pcolormesh(xi, yi, zi.reshape(xi.shape), cmap=plt.cm.BuGn_r)
plt.colorbar()
plt.show()
```
完整代码如下:
```python
import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import kde
# 生成二维随机数据
x = np.random.normal(size=500)
y = np.random.normal(size=500)
# 使用kde计算密度
k = kde.gaussian_kde([x,y])
xi, yi = np.mgrid[x.min():x.max():100j, y.min():y.max():100j]
zi = k(np.vstack([xi.flatten(), yi.flatten()]))
# 绘制二维密度图
plt.pcolormesh(xi, yi, zi.reshape(xi.shape), cmap=plt.cm.BuGn_r)
plt.colorbar()
plt.show()
```
python画二维正态高斯分布图
在Python中,可以使用matplotlib库以及numpy库来绘制二维正态高斯分布图,通常也称为概率密度函数(PDF)。这里是一个基本步骤:
```python
import matplotlib.pyplot as plt
import numpy as np
# 设置随机种子以便于复现结果
np.random.seed(0)
# 定义高斯分布的均值和标准差
mean = [0, 0]
cov = [[1, 0], [0, 1]] # 对角线表示各个维度独立,如果是完全相关则非对角线元素相同
# 生成数据点
x, y = np.meshgrid(np.linspace(-3, 3, 50), np.linspace(-3, 3, 50))
pos = np.empty(x.shape + (2,))
pos[:, :, 0] = x
pos[:, :, 1] = y
rv = np.random.multivariate_normal(mean, cov, size=1000)
density = rv.pdf(pos)
# 绘制图像
plt.contourf(x, y, density, cmap='Blues', alpha=0.6)
plt.colorbar(label='Probability Density')
plt.title('Two-dimensional Gaussian Distribution')
plt.xlabel('X')
plt.ylabel('Y')
plt.show()
阅读全文