0
我有一個從模擬生成數據,然後想要繪製(熱圖/輪廓/ 3d圖等)的觀點;但是,對於這些數據,需要使用interp
等函數進行插值。這裏是樣本dataset。「interp」獲得熱圖/輪廓R
下面是一段代碼,我想...
library(akima)
library(GA) # for persp3D; there exists another package for same function "fields"
data <- read.table(commandArgs()[3], header=T,sep="\t")
data <- na.omit(data)
qmax = max(data$q)
kmax = max(data$k)
x <- data$k_bike/kmax
y <- data$k_car/kmax
z <- data$q/qmax
matrix = interp(x,y,z)
persp3D(matrix ,nlevels=30, asp=1, xlim=c(0,1), ylim=c(0,1), color.palette=colorRampPalette(c("green3","yellow", "red"),space = "rgb"))
現在,由於插值,有很多點,其中有紅/橙色代替綠色等等。對於例如,如果我使用的lattice
levelplot(z~x*y, xlim=c(0,1), ylim=c(0,1), col.regions=colorRampPalette(c("green3","yellow", "red"),space = "rgb"))
levelplot
結果是 -
現在,它是清晰可見的,有有極少數的數據點零(或幾乎爲零)值爲z
。現在,問題是,在levelplot中,我得到了人爲因素(缺少數據點的白色),我想要更好的插值。有沒有其他功能來執行此操作?
我也試過等高線圖如下:
scale <- (qmax+10)/qmax * c(0.000, 0.01, 0.05, 0.10, 0.25, 0.5, 0.75, 1.0)
filled.contour(matrix, nlevels=30, asp=1, xlim=c(0,1), ylim=c(0,1), levels=scale,color.palette=colorRampPalette(c("green3","yellow", "red"),space = "rgb"))
和結果又是(一種顏色不對指示的)。
總之 - 我想有等高線圖或3D圖,但具有零(大約爲零)
z
值數據 點類似電平的 清晰(或正確)顏色指示情節。
你的第二個方法已經回答了我的問題。但是,我仍然想嘗試第一個(然後接受答案)。我猜'as.mesh3d'需要'nat'包但是會拋出一個錯誤(** UseMethod(「as.mesh3d」)中的錯誤: 沒有適用於'as.mesh3d'的方法應用於class deluder類「**) – novice
@Amit;我想你不會使用最新版本的'rgl'軟件包(舊版本沒有處理'deldir.obj'的方法)。請運行'install.packages(「rgl」)'並重試第一個。 – cuttlefish44
謝謝。重新安裝「rgl」工作。但是,我仍然對第二種方法感到高興。感謝提示。 – novice