簡體   English   中英

r plotly 如何使用緯度、經度和 z 獲得 3d 表面

[英]r plotly how to get 3d surface with lat, long and z

我有大約 10 個位置的緯度、經度和數據值。 這是我可以輕松為我的問題構建的數據框示例

x <- c("-108.6125","-108.5114","-108.805","-108.4014","-108.5615","-108.8349","-108.225","-108.3139","-108.5568","-108.4968")
y <- c("39.02205","39.22255","39.598","38.89478","39.06429","39.27625","39.03","39.1306","39.14823","38.89795")
z <- c("60.7735","56.45783","49.65","60.15","50","53.95417","50.825","56","55.843","38.73333")
df <- data.frame(x = as.numeric(x),y = as.numeric(y),z = as.numeric(z))

我想根據數據框中的 x、y 和 z 值創建一個 3d 表面。 x 和 y 是緯度和經度。 z 是經緯度對的值。

我可以用plot_ly(df, x = ~x, y = ~y, z = ~z) %>% add_markers(color = ~z)做一個 3d 散點圖plot_ly(df, x = ~x, y = ~y, z = ~z) %>% add_markers(color = ~z)但將 add_surface 添加到此代碼不起作用。

涉及火山 df 的 plotly 3d 表面示例( plot_ly() %>% add_surface(x = ~x, y = ~y, z = ~volcano )使用均勻間隔的 x 和 y 值,z 是一個二維數組。如果我正確理解,我需要每個位置的 x 和 y 對。

是否可以進行某種操作來創建 add_surface 代碼所需的 z 矩陣?

有時寫一個問題有助於找到答案。 所需的操作是某種空間插值(克里金法)程序。 這個 stackoverflow Q and A解釋了基礎知識並給出了具體的例子。 對於上述問題中描述的數據集,以下幾行提供了解決方案。 該鏈接也有其他方法。

library(akima)
library(plotly)
s = interp(x = df$x, y = df$y, z = df$z)
p <- plot_ly(x = s$x, y = s$y, z = s$z) %>% add_surface()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM