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