如何在autoKrige中插入x和y标签和刻度线?

时间:2014-08-15 10:07:01

标签: r label automap

使用两个数据集:

  1. 3列(x,y,数据)中的空间数据

  2. 2列(x,y)

  3. 中的网格数据

    automap package autoKrige可以计算kriging,并且可以绘制没有x和y刻度标记和标签:

    plot(kriging_result)
    automapPlot(kriging_result$krige_output, "var1.pred", sp.layout = list("sp.points", shimadata), main="OK without grids", xlab="x", ylab="y")
    

    当我使用ggplot2包时,它会显示错误,但它会计算克里金法:

    mydata<-read.table("D:/.../mydata.txt",header=T,sep=",")
    #Renaming desired columns:
    x<-mydata[,1]
    y<-mydata[,2]
    waterelev<-mydata[,3]
    library(gstat)
    coordinates(mydata)=~x+y
    library(ggplot2)
    theme_set(theme_bw())
    library(scales)
    library(automap)
    grids<-read.table("D:/.../grids.txt",header=T,sep=",")
    gridded(grids)=~x+y
    kriging_result = autoKrige(log(waterelev)~1, mydata)
    #This line turns the log(data) back to the original data:
    kriging_result$krige_output$var1.pred<-exp(kriging_result$krige_output$var1.pred)
    library(reshape2)
    ggplot_data = as.data.frame(kriging_result$krige_output)
    ggplot(ggplot_data, aes(x = x, y = y, fill = var1.pred)) + 
       geom_raster() + coord_fixed() + 
       scale_fill_gradient(low = 'white', high = muted('blue'))
    

    错误:

    错误:美学必须是长度为1或与dataProblems相同的长度:x,y

2 个答案:

答案 0 :(得分:3)

automapPlot函数是spplot的包装器,因此任何适用于spplot的修补程序也适用于automapPlot。您可以从spplot文档开始,以便开始。

但是,我通常会使用ggplot2包进行任何绘图工作,包括空间数据。以下是再现automapPlot结果的示例:

library(ggplot2)
theme_set(theme_bw())
library(scales)
library(automap)
data(meuse)
coordinates(meuse) =~ x+y
data(meuse.grid)
gridded(meuse.grid) =~ x+y
kriging_result = autoKrige(zinc~1, meuse, meuse.grid)

# Cast the Spatial object to a data.frame
library(reshape2)
ggplot_data = as.data.frame(kriging_result$krige_output)

ggplot(ggplot_data, aes(x = x, y = y, fill = var1.pred)) + 
    geom_raster() + coord_fixed() + 
    scale_fill_gradient(low = 'white', high = muted('blue'))

enter image description here

答案 1 :(得分:1)

我使用了您提供的数据集,并将结果发布为图像:

ggplot result

我只是运行你的代码,直到ggplot_data从spPointsDataFrame(网格化)生成到data.frame(带有reshape2)。 然后我逐步构建了ggplot对象,但我没有发现错误:

g=ggplot(data=ggplot_data,aes(x=x1,y=x2,fill=var1.pred))
g=g+geom_raster()
g=g+coord_fixed()
g=g+scale_fill_gradient(low = 'white', high = muted('blue'))
print(g)

这是你所期望的吗?