如何从Plotly中的X,Y,Z数组绘制3D曲面?

时间:2019-12-23 22:30:52

标签: python 3d plotly

我试图了解如何从X,Y,Z实际数据数组绘制3D表面。因此,我找到了一个很好的Plotlu 3D表面绘图示例:

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))

fig.show()

但是,mt_bruno_elevation.csv数据对我来说有点混乱。如果我有真实数据的X,Y,Z数组,我不明白数据在CSV中确切表示什么以及如何构建类似的东西。

1 个答案:

答案 0 :(得分:3)

最简单的表面方程形式为z = f(x,y)。据我了解,在此示例中,z-data是2D数组。看下面的例子;

 z-data = [ 
[ 0.1, 0.2, 0.3, 0.4 ],
[ 0.5, 0.6, 0.7, 0.8 ],
[ 0.9, 1.0, 1.1, 1.2 ],
[ 1.3, 1.4, 1.5, 1.6 ]
]

这是一个z矩阵。也就是说,这些数字是不同xy的z轴值。现在的问题是,xy是什么。

z-data[ 0.1, 0.2, 0.3, 0.4 ])的第一个元素用于常量y=0x的不同值。因此,第一个值(0.1)的(x,y,z)等于(0,0,0.1)。第二个值(0.2)是(1,0,0.2),依此类推。

z-data[ 0.5, 0.6, 0.7, 0.8 ])的第二个元素用于常量y=1x的不同值。因此,第一个值(0.5)的(x,y,z)等于(0,1,0.5)。对于第二个值(0.6)为(1,1,0.2),依此类推。

有用的链接: Link 1 Link 2 Link 3