我试图了解如何从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中确切表示什么以及如何构建类似的东西。
答案 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矩阵。也就是说,这些数字是不同x
和y
的z轴值。现在的问题是,x
和y
是什么。
z-data
([ 0.1, 0.2, 0.3, 0.4 ]
)的第一个元素用于常量y=0
和x
的不同值。因此,第一个值(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=1
和x
的不同值。因此,第一个值(0.5)的(x,y,z)等于(0,1,0.5)。对于第二个值(0.6)为(1,1,0.2),依此类推。