如何引用图的“数据”的值(重用值)?

时间:2015-01-06 11:54:14

标签: r ggplot2

我有一个条形图 -

df <- data.frame(xpos=c(200, 300, 400, 600),
                 ypos=c(  1,   3,   2,   1))
gp <- ggplot(df, aes(x=xpos, y=ypos)) +
  geom_bar(stat="identity")

并且想要连接一条线,比如第1,3和2条。如果我通过原始数据框data定义df,我就会成功执行此操作:

gp +
  geom_path(data=data.frame(xpos=c(df$xpos[1], df$xpos[3], df$xpos[2]),
                            ypos=c(df$ypos[1], df$ypos[3], df$ypos[2])))

但是,如果我不能/不想引用源数据帧而是想要使用先前定义的data的值,该怎么办?我尝试了以下方法:

gp +
  geom_path(data=data.frame(xpos=c(xpos[1], xpos[3], xpos[2]),
                            ypos=c(ypos[1], ypos[3], ypos[2])))
# object 'xpos' not found

gp +
  geom_path(data=aes(xpos=c(xpos[1], xpos[3], xpos[2]), 
                     ypos=c(ypos[1], ypos[3], ypos[2]))
            )
# ggplot2 doesn't know how to deal with data of class uneval

1 个答案:

答案 0 :(得分:3)

一种方法是明确地从gp对象中获取数据:

gp + geom_path(data=gp$data[c(1,3,2),])