问题描述
我正在尝试使用浮点数组创建3D表面图。我尝试了可用的答案,但没有成功。
我的代码:
ydata xdata zdata
0 667.029710 38.666953 2156.370026
1 673.518030 38.578639 2167.733673
2 928.285970 39.558060 2984.315454
3 947.973966 39.329530 3065.414025
4 904.826638 40.241960 3071.355114
5 901.673720 40.259228 2947.752668
6 910.980404 41.478425 2906.467214
7 916.008852 41.813555 2933.900440
8 913.971114 41.583315 2955.543549
9 933.040692 42.577816 2979.264288
import plotly.graph_objects as go
import plotly.graph_objs
import pandas as pd
import numpy as np
xdata = df['xdata'].values
ydata = df['ydata'].values
zdata = df['zdata'].values
plotly.offline.plot({"data":[go.Surface(z=zdata,x=xdata,y=ydata)],"layout":plotly.graph_objs.Layout(title='Some data',autosize=False,width=500,height=500,margin=dict(l=65,r=50,b=65,t=90))})
它没有产生输出。我看到了3d图,但没有任何数据。
解决方法
如果数据是在一维中指定的,则不会显示该数据,因为不会为其配置3D信息。如果按照代码指定整个数据框,则将显示它。 Official Reference
import pandas as pd
import numpy as np
import io
data = '''
ydata xdata zdata
0 667.029710 38.666953 2156.370026
1 673.518030 38.578639 2167.733673
2 928.285970 39.558060 2984.315454
3 947.973966 39.329530 3065.414025
4 904.826638 40.241960 3071.355114
5 901.673720 40.259228 2947.752668
6 910.980404 41.478425 2906.467214
7 916.008852 41.813555 2933.900440
8 913.971114 41.583315 2955.543549
9 933.040692 42.577816 2979.264288
'''
df = pd.read_csv(io.StringIO(data),sep='\s+')
import plotly.graph_objects as go
import plotly.graph_objs
# xdata = df['xdata'].values
# ydata = df['ydata'].values
# zdata = df['zdata'].values
plotly.offline.plot({"data":[go.Surface(z=df.values)],"layout":plotly.graph_objs.Layout(title='Some data',autosize=False,width=500,height=500,margin=dict(l=65,r=50,b=65,t=90))})