6

x、y、zデータを使用して変数zの等高線を作成したいと思います。ただし、データを昇順で提供する必要があるようです。

いくつかのコードを使おうとしましたが、エラーが発生しました。

次のコードを試しました:試行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")

次のエラーが発生しました

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

次に、ggplot2を使用して輪郭を作成しようとしました。次のコードを使用しました。

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

次のエラーが発生しました:

警告メッセージ:

Not possible to generate contour data 

次の場所でデータを見つけてくださいhttps://www.dropbox.com/s/mg2bo4rcr6n3dks/temp.csv

temp.csvの3番目の変数(z)から等高線データを作成する方法を教えてもらえますか?これらを何度も実行する必要があるため、ArcgisではなくRで実行しようとしています。

4

1 に答える 1

8

これは、パッケージinterpから使用して補間する方法の例です。akima

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)

ここに画像の説明を入力してください

これは、関数を使用した代替プロットimageです(これにより、低レベルのプロット関数を追加するための柔軟性が得られます(関数が必要image.scaleです。ここにあります)。

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)

ここに画像の説明を入力してください

于 2013-01-17T10:01:27.007 に答える