Python 如何在三维散点图中添加平面

Python 如何在三维散点图中添加平面,python,python-3.x,jupyter-notebook,google-colaboratory,plotly-python,Python,Python 3.x,Jupyter Notebook,Google Colaboratory,Plotly Python,使用Blender创建了此模型 这可以在中的A帧中看到 这个模型很棒,它概述了我在这里要完成的工作。基本上,我没有名字,而是用点来象征一个特定的平台 在我看来,以目前的技术水平实现这一目标的最佳途径是通过。我有下面的散点图 通过转到,您可以单击按钮并在Colab中打开它 这几乎像模型。但是,仍然需要在特定位置向绘图添加三个平面。更准确地说,在x=?,y=?z=?(我使用问号是因为该值可以是任何已确定的值) 换句话说,要向散点图添加三个平面吗 x=10 y=30 z=40 在文档中,与

使用Blender创建了此模型

这可以在中的A帧中看到

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

在我看来,以目前的技术水平实现这一目标的最佳途径是通过。我有下面的散点图

通过转到,您可以单击按钮并在Colab中打开它

这几乎像模型。但是,仍然需要在特定位置向绘图添加三个平面。更准确地说,在x=?,y=?z=?(我使用问号是因为该值可以是任何已确定的值)

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

  • x=10
  • y=30
  • z=40
在文档中,与我想要的非常相似的是

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


我想您可能正在
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))

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))