绘制Plotly 3d曲面图时,我遇到了一些坚韧。我有一个4000行和3列的大数据框架。我在这里提出了一些问题,并得到了一些答案。当我尝试这些问题时,代码运行需要几个小时,但我看不到任何图。我想确认我所做的是正确的。因为我对曲面图是新手。
我的代码:
import plotly.graph_objects as go
import plotly.graph_objs
import plotly
df =
index x y z
0 10.2 40.5 70.5
1 30.5 30.2 570.5
.
.
4000 100.5 201.5 470.5
df['z']= [df['z'].tolist for x in df.index]
df =
index x y z
0 10.2 40.5 [70.5,570.5,..,470.5]
1 30.5 30.2 [70.5,570.5,..,470.5]
.
.
4000 100.5 201.5 [70.5,570.5,..,470.5]
zdata = [df['z'].tolist()]*len(df)
plotly.offline.plot({"data":[go.Surface(x=df['x'].values,
y=df['y'].values,
z = df['z'].values)],
"layout":plotly.graph_objs.Layout(title='Some data', autosize=False,
width=600, height=600,
scene = dict(xaxis_title='x',
yaxis_title='y',
zaxis_title='z'),
margin=dict(l=10, r=10, b=10, t=10))})
如果有人能向我澄清,我生成曲面图的操作是否正确,我将不胜感激。
2条答案
按热度按时间9wbgstp71#
这里是一个简单的/剥离的3D表面图的例子,希望能让你开始。
这里的关键信息是:同样的逻辑在一个有4000多行的DataFrame上应该没问题。(当然,它会绘制大约16 M个数据点,所以会花一些时间)。
要记住的关键点是
z
必须是形状为[x.shape[0], y.shape[0]]
的2d数组。本质上,如果x
和y
的长度为10,则z
必须是以下形状:[10, 10]
.由于我没有完整的数据集,我已经合成了数据-希望可以用于说明目的。此外,为了简单起见,我坚持使用
numpy
,记住numpy数组本质上是DataFrame列。简单示例:
输出:
来点更有趣的:
你会注意到绘图逻辑是相同的。
输出:
iecba09b2#
当你使用
go.Surface
时,z
应该是一个二维矩阵,x
和y
应该是x_axis和y_axis的唯一值。这段代码为使用go.Surface
准备了DataFrame值。