簡體   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