[英]Creating 3D surface plots using three 1D arrays of floats in Plotly
[英]Creating 3D surface plots using in Plotly
我正在尝试使用 ZA5E13387C005FE84D14E 中的三个 1D arrays 浮动创建 3D 表面 plot 这是我的数据的样子:
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 plot 的表面 plot。 This is the code I am using to generate the 3D plot: 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 得到的表面 plot。 表面 plot 来自 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()
任何指针将不胜感激,谢谢!
我认为您需要创建二维数组才能 plot 曲面。
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()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.