繁体   English   中英

Plotly 3D 表面 plot 未出现

[英]Plotly 3D surface plot not appearing

嗨,我正在尝试 plot Plotly 3D 表面 plot,但不幸的是它没有出现。 当我尝试使用Scatter3D时,它可以工作,但不适用于Surface3D 任何想法为什么?

# Scatter 3D
p = go.Figure()
p.add_trace(go.Scatter3d(
    x = df.X1,
    y = df.X2,
    z = df.Y3,
    mode = "markers",
    marker = dict(size = 3),
    name = "actual"
))

在此处输入图像描述

from plotly.offline import plot
trace = go.Surface(x = df.X1,y = df.X2,z = df.Y3)
data = [trace]
p2 = dict(data = data)
plot(p2)

在此处输入图像描述

曲面不仅仅是一堆点。 要绘制一个曲面,Plotly 需要知道如何将其拆分为基本三角形。 当然,您可能会认为,看到您的散点图 plot,似乎很明显该怎么做。 但是,好吧,如果你的点不是那么平面的话,它就不那么明显了。 另外,即使在明显的情况下,这也意味着要对所有 (x,y) 点进行 Delaunay 三角剖分。 那将是昂贵的。

所以,好吧,至少在 plotly 中,曲面不仅仅是一堆点。

它是一个 z 值矩阵,与 (x,y) 值的规则隐式网格相匹配。

只需看看如何使用两种方法(散点图和曲面)绘制一个 3×3 的平面。

import plotly.graph_objects as go
p = go.Figure()
p.add_trace(go.Scatter3d(
    x = [0,1,2,0,1,2,0,1,2],
    y = [0,0,0,1,1,1,2,2,2],
    z = [1,1,1,1,1,1,1,1,1],
    mode = "markers",
    marker = dict(size = 3),
    name = "actual"
))
p.show()
import plotly.graph_objects as go
p = go.Figure()
p.add_trace(go.Surface(
    x = [0,1,2],
    y = [0,1,2],
    z = [[1,1,1],[1,1,1],[1,1,1]]
))
p.show()

在第二种情况下,表面被描述为 z 值的二维数组(x 和 y 值只是设置比例。您可以省略它们,除非您需要不规则间距)

在第一种情况下,x、y、z 一起描述了一堆点(在这个例子中,恰好是规则间隔的,但 plotly 无法猜测,因为没有什么能阻止我为 x 和 y 赋予不同的值)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM