python - 如何在plotly 3D曲面图中标记区域?

标签 python plot 3d plotly geospatial

我使用plotly从xyz数据创建3D高程剖面,它与以下代码配合得很好:

import plotly.graph_objects as go
import pandas as pd
import numpy as np

# Read data
contour_data = pd.read_csv(r"C:\Elevation.xyz", delimiter=' ', names=["x","y","z"])
print(contour_data.head())

# Create 2D grids for X,Y and Z
Z = contour_data.pivot_table(index='x', columns='y', values='z').T.values
X_unique = np.sort(contour_data.x.unique())
Y_unique = np.sort(contour_data.y.unique())
X, Y = np.meshgrid(X_unique, Y_unique)

# Generate 3D plot
fig = go.Figure(data=[go.Surface(z=Z,x=X_unique,y=Y_unique)])
fig.update_layout(title='Elevation', autosize=True, margin=dict(l=65, r=50, b=65, t=90))
fig.update_layout(scene=dict(aspectratio=dict(x=2, y=2, z=0.4)))
fig.show(renderer="browser")

3D elevation plot

现在我想在此表面上标记一个区域 就像这个example 。 或者,只有该区域的边界也不错。

有没有办法通过提供一些 x,y 坐标来标记该区域?

最佳答案

由于您尚未提供数据样本,我将根据 Topographical 3D Surface Plot 中的示例提出初步建议。 。这可能需要一些额外的调整,但您可以使用 fig.add_trace(go.Scatter3D) 突出显示坐标的子集,如下所示:

enter image description here

请告诉我这对您来说效果如何,我们可以仔细研究细节。

完整代码:

import plotly.graph_objects as go

import pandas as pd

# Read data from a csv
z_data = pd.read_csv('https://raw.githubusercontent.com/plotly/datasets/master/api_docs/mt_bruno_elevation.csv')

fig = go.Figure(data=[go.Surface(z=z_data.values)])

fig.update_layout(title='Mt Bruno Elevation', autosize=False,
                  width=500, height=500,
                  margin=dict(l=65, r=50, b=65, t=90))
df2 = z_data.iloc[8:15, 7:21]
fig.add_trace(go.Surface(x = df2.columns, y = df2.index, z=df2.values,
                         colorscale = ['rgba(250,0,0,0.8)', 'rgba(250,0,0,0.8)'],
                         colorbar = None))

fig.show()

关于python - 如何在plotly 3D曲面图中标记区域?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70011559/

相关文章:

python - 客户端无法连接到套接字

r - 更改 ggplot 中的 x 轴刻度线颜色

python - 从一个 python 文件中读取一个数组并使用 Matplotlib 绘制它

按形状、颜色和填充绘制的 R 散点图

3d - Threejs 获取对象的中心

mobile - 如何创建可以识别来自 CAM 的 2D 图像的位置/方向的移动应用程序

math - 我如何找到一个点在平面上的正交投影

python - Python 中的字节总是八位字节吗?

python - 系统日期格式不使用 django 语言环境

python - 在不创建新文件的情况下从 CSV 文件中删除空格