使用列表中的数据创建填充等高线图

5
我有一个数据集,它由一个csv文件中的3列组成。前2列是地图坐标,第三列是对应地图坐标井孔中发现的锌的百分比。我想创建等高线图以显示Zn浓度随距离变化的情况。我能够找到的所有代码示例都使用矩阵形式的数据,而我的数据是列表形式的。我已经尝试了几种不同的绘图方法,我在下面展示了它们,其中大多数方法都会给我返回“未找到对象x”的错误消息,我认为这与我的数据布局有关。有人知道如何做到这一点吗? 我在下面添加了一个与我的数据集类似的数据集。提前感谢任何帮助。
Holly

数据集:

Statsrep <- structure(list(X = c(156000L, 156010L, 156421L, 156450L, 156500L, 156700L, 158420L, 158646L, 158970L, 159050L, 159050L, 159130L, 159155L), Y = c(143630, 143980, 147260, 145000, 146000, 142800, 146700, 145207, 147170, 145200, 144800, 147815, 145890), Zn = c(2, 8, 4, 0, 3, 0, 2, 7, 12, 0, 4, 19, 0)), .Names = c("X", "Y", "Zn"), row.names = c(1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L, 13L), class = "data.frame")
Statsrep

代码:

library(ggplot2)
Grade <- read.csv(file="filename.csv", header=TRUE, sep=",")
ggplot(Grade, aes(x$x="X", y$y="Y", z$z="Zn")) +
stat_contour()

library(lattice)
Grade <- read.csv(file="filename.csv", header=TRUE, sep=",")
levelplot(Grade ~x*y, data = Zn,
xlab = "Eastings", ylab = "Northings",
col.regions = terrain.colours)

Grade <- read.csv(file="filename.csv", header=TRUE, sep=",")
x$x <- X
y$y <- Y
z$z <- Zn
filled.contour(x$x, y$y, z$z, color = terrain.colours,
xlab = "Eastings", ylab = "Northings"),
plot.axes = {axis(1, seq(156000, 165000, by=1000)); axis(2, seq(142000, 150000, by=1000))},
key.title = title(main="Zn content\n(percent)"),
key.axes= axis(4, seq(0, 20, by = 2)))
1个回答

8
使用ggplot2,可以使用以下代码创建一个与您的示例数据集相对应的等值线图:
ggplot(Statsrep, aes(x=X, y=Y, z=Zn)) + 
    geom_density2d()

提供

图片描述

您的ggplot2代码有几个问题。特别是,在设置美学时,您写成了:

aes(x$x="X", y$y="Y", z$z="Zn")

啊,我刚才使用了错误的函数。这个可以工作,但是能否在线条之间填充颜色呢? - Holly Elliott
尝试使用以下代码:g + stat_density2d(aes(fill=..density..), contour=FALSE, geom="tile") - csgillespie
谢谢!当这两个结合在一起时,这绝对是我要找的类型的图。然而,密度的关键并不给出锌的值,它给出e-08的值。 - Holly Elliott
我不太确定最好的做法(我有一些想法,但不完全确定你想要什么)。问另一个问题怎么样? - csgillespie
好的,非常感谢您的帮助! - Holly Elliott

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接