如何在 3D 散点图中添加平面

Tia*_*ica 3 python python-3.x jupyter-notebook google-colaboratory plotly-python

使用 Blender 创建了这个模型

搅拌机八分圆

可以在此链接的A 帧中看到

A-frame ccctant 立方体

这个模型很棒,它概述了我在这里尝试完成的工作。基本上,我没有名称,而是有象征一个特定平台的点。

在我看来,以当前最先进的技术实现它的最佳方法是通过Plotly 3D Scatter Plots。我有以下散点图

3D散点图

import plotly.express as px
import pandas as pd
df = pd.read_csv('https://raw.githubusercontent.com/tiago-peres/immersion/master/Platforms_dataset.csv')
fig = px.scatter_3d(df, x='Functionality ', y='Accessibility', z='Immersion', color='Platforms')
fig.show()
Run Code Online (Sandbox Code Playgroud)

通过转到此链接,您将能够单击一个按钮并在 Colab 中打开它

在 Colab 中打开 GitHub

这几乎看起来像模型。然而,仍然需要在特定位置的地块中添加三个平面。更准确地说,在 x=?, y=? 和 z=? (我使用问号是因为该值可以是任何稳定的值)。

换句话说,想要向散点图添加三个平面

  • x = 10
  • y = 30
  • z = 40

在文档中,与我想要的非常相似的是3D Surface Plots

我做了研究,发现了两个与 R 类似的问题

Ann*_*son 5

我想你可能正在寻找add_trace函数,plotly这样你就可以创建曲面,然后将它们添加到图中:

另外,请注意,肯定有一些方法可以简化此代码,但总体思路是:

import plotly.express as px
import pandas as pd
import plotly.graph_objects as go
import numpy as np


fig = px.scatter_3d(df, x='Functionality ', y='Accessibility', z='Immersion', color='Platforms')

bright_blue = [[0, '#7DF9FF'], [1, '#7DF9FF']]
bright_pink = [[0, '#FF007F'], [1, '#FF007F']]
light_yellow = [[0, '#FFDB58'], [1, '#FFDB58']]

# need to add starting point of 0 to each dimension so the plane extends all the way out
zero_pt = pd.Series([0])
z = zero_pt.append(df['Immersion'], ignore_index = True).reset_index(drop = True)
y = zero_pt.append(df['Accessibility'], ignore_index = True).reset_index(drop = True)
x = zero_pt.append(df['Functionality '], ignore_index = True).reset_index(drop = True)

length_data = len(z)
z_plane_pos = 40*np.ones((length_data,length_data))

fig.add_trace(go.Surface(x=x, y=y, z=z_plane_pos, colorscale=light_yellow,  showscale=False))
fig.add_trace(go.Surface(x=x.apply(lambda x: 10), y=y, z = np.array([z]*length_data), colorscale= bright_blue, showscale=False))
fig.add_trace(go.Surface(x=x, y= y.apply(lambda x: 30), z =  np.array([z]*length_data).transpose(), colorscale=bright_pink, showscale=False))
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明