如何在 3D 散点图中添加平面
How to add Planes in a 3D Scatter Plot
使用 Blender 创建了这个模型
可以在this link
中的A帧中看到
这个模型很棒,它概述了我在这里要完成的工作。基本上,我没有名字,而是用点来象征一个特定的平台。
在我看来,以当前最先进的技术实现它的最佳方法是 Plotly 3D Scatter Plots。我有以下散点图
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()
通过转到 this link,您将能够单击一个按钮并在 Colab 中打开它
这和模特差不多。然而,仍然需要在特定位置的地块中添加三个平面。更准确地说,在 x=?, y=?和 z=? (我使用问号是因为该值可以是任何稳定的值)。
换句话说,想要向该散点图添加三个平面
- x = 10
- y = 30
- z = 40
在文档中,与我想要的非常相似的是 3D Surface Plots。
我做了研究,发现了两个与 R 相似的问题
我认为您可能正在寻找 plotly
中的 add_trace
函数,这样您就可以创建曲面,然后将它们添加到图中:
此外,请注意,肯定有一些方法可以简化此代码,但对于一般的想法:
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))
使用 Blender 创建了这个模型
可以在this link
中的A帧中看到这个模型很棒,它概述了我在这里要完成的工作。基本上,我没有名字,而是用点来象征一个特定的平台。
在我看来,以当前最先进的技术实现它的最佳方法是 Plotly 3D Scatter Plots。我有以下散点图
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()
通过转到 this link,您将能够单击一个按钮并在 Colab 中打开它
这和模特差不多。然而,仍然需要在特定位置的地块中添加三个平面。更准确地说,在 x=?, y=?和 z=? (我使用问号是因为该值可以是任何稳定的值)。
换句话说,想要向该散点图添加三个平面
- x = 10
- y = 30
- z = 40
在文档中,与我想要的非常相似的是 3D Surface Plots。
我做了研究,发现了两个与 R 相似的问题
我认为您可能正在寻找 plotly
中的 add_trace
函数,这样您就可以创建曲面,然后将它们添加到图中:
此外,请注意,肯定有一些方法可以简化此代码,但对于一般的想法:
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))