python绘制山脊图
时间: 2024-10-08 09:14:07 浏览: 48
在Python中,可以使用matplotlib库中的`contourf()`函数结合`tricontour()`函数来绘制山脊图,这是一种显示三维数据表面高度变化的地图。这种图通常用于表示地形、风向等二维场的数据。以下是一个简单的示例:
```python
import matplotlib.pyplot as plt
from scipy.spatial import Delaunay
import numpy as np
# 创建随机数据点作为地形网格
x = np.linspace(-5, 5, 100)
y = np.linspace(-5, 5, 100)
X, Y = np.meshgrid(x, y)
Z = np.sin(np.sqrt(X**2 + Y**2))
# 使用Delaunay计算三角形网格
tri = Delaunay(np.c_[X.ravel(), Y.ravel()])
# 绘制山脊图
fig, ax = plt.subplots()
ax.tricontourf(tri, Z.ravel(), cmap='terrain', alpha=0.7) # 使用 terrain 调色板
ax.tricontour(tri, Z.ravel(), colors='k', linewidths=0.5)
# 添加标题和坐标轴标签
plt.title('Ridge Plot')
ax.set_xlabel('X-axis')
ax.set_ylabel('Y-axis')
# 显示图像
plt.show()
相关问题
python 山脊图_纯Python绘制满满艺术感的山脊地图
山脊图(ridge plot)是一种用于展示多个变量间关系的数据可视化方式。通过将多个变量的分布图在一条轴线上展示,并使用颜色或阴影来区分不同的变量,可以清晰地展示出变量间的关系。下面是一个纯Python绘制山脊图的示例代码:
```python
import seaborn as sns
import matplotlib.pyplot as plt
# 导入数据
iris = sns.load_dataset('iris')
# 绘制山脊图
sns.set(style="white", rc={"axes.facecolor": (0, 0, 0, 0)})
g = sns.FacetGrid(iris, row="species", hue="species", aspect=15, height=.5)
g.map(sns.kdeplot, "sepal_width", clip_on=False, shade=True, alpha=1, lw=1.5, bw=.2)
g.map(sns.kdeplot, "sepal_width", clip_on=False, color="w", lw=2, bw=.2)
g.map(plt.axhline, y=0, lw=2, clip_on=False)
# 调整图像格式
g.map(plt.xlim, 1.5, 4.5)
g.map(plt.ylim, -0.5, 1)
g.despine(left=True, bottom=True)
```
这段代码使用了Seaborn库中的FacetGrid函数和kdeplot函数来绘制山脊图,并使用了Matplotlib库中的axhline函数来绘制水平线。运行代码后,可以得到一个展示了鸢尾花数据集中不同物种花萼宽度分布的山脊图。
山脊图python代码
山脊线,也称为轮廓线或等高线,通常用于表示地形、数据可视化或图像处理中的边缘边界。在Python中,可以使用matplotlib库结合numpy计算来生成山脊图。这里有一个简单的例子:
```python
import numpy as np
import matplotlib.pyplot as plt
# 创建一个二维网格
x = np.linspace(-5, 5, 100)
y = np.linspace(-5, 5, 100)
X, Y = np.meshgrid(x, y)
# 假设这是海拔高度数据
Z = X**2 + Y**2
# 计算山脊线,这里用轮廓算法 skimage.measure.skeletonize
from skimage import measure
skeleton = measure.skeletonize(Z > Z.mean())
# 可视化结果
plt.imshow(skeleton, cmap='gray', interpolation='nearest')
plt.contour(X, Y, Z, colors='red') # 绘制海拔等值线
plt.title('Sobel Filtered Image with Skeletonization')
plt.show()
```
这个例子首先创建了一个网格,并填充了随机的高度数据作为海拔。然后使用`skimage.measure.skeletonize`函数找到轮廓线(山脊线)。最后,我们将轮廓线用灰度图显示出来,并叠加红色的海拔等值线。
阅读全文