美好的一天
这两天我一直在尝试解决以下问题。不幸的是我不是专家。不过,我允许自己尝试在这里描述我的问题,并感谢任何帮助。
我有特定 x 和 y 坐标的测量数据 z (eps_xx)。您可以看到下面表示的格式为 Pandas Dataframe:
Node [-] x [m] y [m] eps_xx [-]
0 1 0.0096 0.0089 8.310000e-07
1 2 0.0000 0.0089 1.317000e-07
2 3 0.0000 0.0000 8.104000e-07
3 4 0.0096 0.0000 2.465000e-06
4 5 0.0192 0.0000 6.276000e-06
... ... ... ... ...
2314 2315 0.7700 0.1333 -7.269000e-06
2315 2316 0.7700 0.1426 -6.697000e-06
2316 2317 0.7700 0.1499 -3.587000e-06
2317 2318 0.7700 0.1520 6.296000e-07
2318 2319 0.7700 0.1600 -2.000000e-06
x、y坐标的点不遵循任何规律,自由分布。 我想根据这些数据创建一个 3D 表面图(最好是 plotly,但 matplolib 也可以)。我已经做过的散点图:
import pandas as pd
import plotly.graph_objects as go
# Read data from Excel file
df = pd.read_excel('Data.xlsx', sheet_name="Step_5")
print(df)
# Extract x, y, z values from data frame
x = df['x [m]'].values
y = df['y [m]'].values
z = df['eps_xx [-]'].values
# Create a 3D scatter plot with the vertical plane
fig = go.Figure()
# Add the scatter plot trace
fig.add_trace(go.Scatter3d(x=x, y=y, z=z, mode='markers', marker=dict(size=3)))
# Set plot layout
fig.update_layout(scene=dict(xaxis_title='x [m]', yaxis_title='y [m]', zaxis_title='eps_xx [-]'))
# Display plot
fig.show()
但是因为 x 和 y 点是自由分布的,所以我现在不能做的第一件事就是用
go.Surface(x=x, y=y, z=z)
创建一个曲面图。
在我成功地从这些 3D 测量点创建一个表面后,我想从它沿着给定的垂直平面生成一个 2D 图。实际上完全可以在这篇文章中找到: 像这篇文章中那样的解决方案,图片: 不幸的是,本文适用于函数而不是点测量数据。
最后一步是将切割图的新二维数据点再次放入 Pandas Dataframe 中。
也许需要在后台手工完成相当多的数学运算,并在 Plotly 中显示结果。到目前为止,在我的研究中,我只希望在自由 3D 空间中已经有一个用于此类切割操作的预制库。可以在数据点之间进行线性插值
我已经尝试了几种方法来解决我的问题。我使用了不同的库,如 numpy、scipy 或 scikit-learn,并尝试了我发现的各种代码示例。但是对于3D点数据我真的没有找到合适的。
感谢您的帮助!