【问题标题】:How to add Planes in a 3D Scatter Plot如何在 3D 散点图中添加平面
【发布时间】:2020-10-05 18:46:39
【问题描述】:

使用 Blender 创建了这个模型

可以在this link的A-frame中看到

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

在我看来,利用当前最先进的技术实现它的最佳方式是通过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 类似的问题

【问题讨论】:

    标签: python python-3.x jupyter-notebook google-colaboratory plotly-python


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2016-11-14
      • 2017-03-01
      • 1970-01-01
      • 2018-06-24
      • 1970-01-01
      • 1970-01-01
      • 2019-05-14
      • 2020-06-26
      • 1970-01-01
      相关资源
      最近更新 更多