Is it possible to create a three-dimensional contour diagram without continuous data in R?

I want to create a contour of the variable z with data x, y, z. However, it seems to us that we need to provide data in an increasing order.

I tried using some kind of code, but it gave me an error.

I tried the following code: Trial 1:

age2100 <- read.table("temp.csv",header=TRUE,sep=",") x <- age2100$x y <- age2100$y z <- age2100$z contour(x,y,z,add=TRUE,col="black") 

I got the following error:

 Error in contour.default(x, y, z, add = TRUE, col = "black") : increasing 'x' and 'y' values expected 

Then I tried using ggplot2 to create a path. I used the following code:

 library("ggplot2") library("MASS") library("rgdal") library("gpclib") library("maptools") age2100 <- read.table("temp.csv",header=TRUE,sep=",") v <- ggplot(age2100, aes(age2100$x, age2100$y,z=age2100$z))+geom_contour() v 

I got the following error:

Warning message:

 Not possible to generate contour data 

Please find the following data https://www.dropbox.com/s/mg2bo4rcr6n3dks/temp.csv

Can someone tell me how to create contour data from third variable (z) from temp.csv? I need to do this many times, so I'm trying to do it in R instead of Arcgis.

+6
source share
1 answer

Here is an example of how to interpolate one using interp from the akima package:

 age2100 <- read.table("temp.csv",header=TRUE,sep=",") x <- age2100$x y <- age2100$y z <- age2100$z require(akima) fld <- interp(x,y,z) par(mar=c(5,5,1,1)) filled.contour(fld) 

enter image description here

Below is an alternative graph using the image function (this gives some flexibility to add lower-level build functions (requires the image.scale function found here ):

 source("image.scale.R") # http://menugget.blogspot.de/2011/08/adding-scale-to-image-plot.html x11(width=5, height=6) layout(matrix(c(1,2), nrow=1, ncol=2), widths=c(4,1), height=6, respect=TRUE) layout.show(2) par(mar=c(4,4,1,1)) image(fld) contour(fld, add=TRUE) points(age2100$x,age2100$y, pch=".", cex=2) par(mar=c(4,0,1,4)) image.scale(fld$z, xlab="", ylab="", xaxt="n", yaxt="n", horiz=FALSE) box() axis(4) mtext("text", side=4, line=2.5) 

enter image description here

+8
source

All Articles