[英]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.