【问题标题】:Overplotting from different data frames in ggplot2从 ggplot2 中的不同数据帧过度绘制
【发布时间】:2011-11-22 21:08:15
【问题描述】:

我的目标是绘制一条河流的路径,其中的点表示河流附近的重要地点。

我有两个数据框,分别给出河流和场地坐标:

river<-data.frame(
    long=c(-2.816452494909265,-2.845487331898639,-2.883036393822358),
    lat=c(56.38229290416972,56.36346886284386,56.36577994637793))

samploc<-data.frame(
    site=c("Site1","Site2","Site3"),
    long=c(-2.826213585663894,-2.816519300644918,-2.868437228090127),
    lat=c(56.3649482229089,56.38166100310631,56.36716019476281))

使用老式的 R 绘图,使用 par(new=T) 并保留 xlim 和 ylim,我会得到这样的结果:

old school plot http://users.utu.fi/susjoh/Riverplot.png

但我想用 ggplot2 来做。河流和点可以很容易地单独调用:

ggplot(river,aes(x=long,y=lat)) + geom_path()
ggplot(samploc,aes(x=long,y=lat,lab=site)) + geom_point() + geom_text(vjust=2)

我试图通过从前两个创建以下数据框来作弊:

> rivsamp
  river.long river.lat samp.site samp.long samp.lat
1  -2.816452  56.38229      NA        NA       NA
2  -2.845487  56.36347      NA        NA       NA
3  -2.883036  56.36578      NA        NA       NA
4         NA        NA     Site1 -2.826214 56.36495
5         NA        NA     Site2 -2.816519 56.38166
6         NA        NA     Site3 -2.868437 56.36716

ggplot(rivsamp) +
  geom_path(aes(x=river.long,y=river.lat)) +
  geom_point(aes(x=samp.long,y=samp.lat)) +
  geom_text(aes(x=samp.long,y=samp.lat,lab=samp.site),vjust=2)

ggplot2 plot http://users.utu.fi/susjoh/riverggplot.png

它可以工作,但是创建这个新数据框不像旧的 par(new=T) 方法那么简单。

有没有一种更简单的方法可以使用 ggplot2 从单个数据帧中叠加?

谢谢!

【问题讨论】:

  • 我会使用设计用于处理空间数据的类,即 sp 包中定义的 SpatialPoints 和 SpatialLines。
  • @Kevin,不是完全重复,但感谢您发帖,因为它帮助我找到了答案。

标签: r ggplot2


【解决方案1】:

这是一种方法

ggplot(samploc, aes(x = long, y = lat)) + 
  geom_point() + 
  geom_text(aes(label = site), vjust = 2) + 
  geom_line(data = river, aes(y = lat))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-01
    • 2021-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-05
    • 2016-11-03
    相关资源
    最近更新 更多