微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 Plotly 中使用创建 3D 曲面图

如何解决在 Plotly 中使用创建 3D 曲面图

我正在尝试使用 Plotly 中的三个一维浮点数组创建一个 3D 曲面图。这是我的数据的样子:

    alpha_1 alpha_2   sse
0   0.01    0.01    4.817321e+07
1   0.01    0.11    4.854821e+07
2   0.01    0.21    4.864922e+07
3   0.01    0.31    4.869423e+07
4   0.01    0.41    4.870884e+07
... ... ... ...
95  0.91    0.51    4.859500e+07
96  0.91    0.61    4.857550e+07
97  0.91    0.71    4.855622e+07
98  0.91    0.81    4.853898e+07
99  0.91    0.91    4.852403e+07

我想创建一个基本上模仿这个 3d 图的表面图。 这是我用来生成 3D 图的代码 see here 3D plot I want to make as surface plot

x = np.asarray(surface_df['alpha_1'])
y = np.asarray(surface_df['alpha_2'])
z = np.asarray(surface_df['sse'])

fig = plt.figure()
ax = plt.axes(projection="3d")
ax.scatter3D(x,y,z,c=z);
plt.show()

但这是我用 Plotly 得到的表面图。 Surface plot from Plotly.

这是我用于 plotly 的代码

fig = go.figure(data=[go.Surface(x=surface_df['alpha_1'].values,y=surface_df['alpha_2'].values,z=surface_df[['alpha_1','sse','alpha_2']].values)])

fig.update_layout(title='plot',autosize=True,width=500,height=500)
fig.show()

如有任何指点,将不胜感激,谢谢!

解决方法

我认为您需要创建二维数组才能绘制曲面。

import pandas as pd
import numpy as np
import plotly.graph_objects as go 
from scipy.interpolate import griddata

#Read data
data = pd.read_csv('your_data_set.txt',header=0,delimiter='\t')

#Create meshgrid for x,y
xi = np.linspace(min(data['alpha_1']),max(data['alpha_1']),num=100)
yi = np.linspace(min(data['alpha_2']),max(data['alpha_2']),num=100)

x_grid,y_grid = np.meshgrid(xi,yi)

#Grid data
z_grid = griddata((data['alpha_1'],data['alpha_2']),data['sse'],(x_grid,y_grid),method='cubic')

# Plotly 3D Surface
fig = go.Figure(go.Surface(x=x_grid,y=y_grid,z=z_grid,colorscale='viridis'))

fig.show()

additional information about gridding methods

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。