使用“R”在同一图表上绘制两条线

时间:2012-03-22 23:46:27

标签: r

采用这种方法。我有一个线图。我想在同一个图上绘制'两个'线图。我怎样才能简单地添加该数据,

数据的格式为

1  5  10
2  8  20
3  9  30

我想将X绘制为column1,将其他两列绘制在y轴上。

-----
 # Commands
  2
  3 library(ggplot2)
  4
  5 req <- read.table("stats_quick_sort.dat")
  6
  7 summary(req)
  8
  9 xx <- req$V1
 10 yy <- req$V2
 11
 12
 13 png('stats_sort_image.png', width=800, height=600)
 14 gg <- qplot(xx, yy) + geom_line()
 15 print(gg)
 16 dev.off()

2 个答案:

答案 0 :(得分:2)

顺便说一句 - 如果您提供演示问题的可重现的示例,我们会更容易为您提供帮助。我将给你一个可重复的例子作为答案,所以你明白我的意思。这意味着任何人都可以复制并粘贴代码并且它将起作用(而我无法复制/粘贴您的代码,因为我没有stats_quick_sort.dat)。

要在地块上绘制多条线,您只需再次拨打geom_line,将xy变量输入aes

# generate some dummy data so this example can be reproduced
xx  <- sort(runif(20))
yy  <- runif(20)
yy2 <- runif(20)

gg <- qplot(xx, yy) + geom_line()        # first line
gg <- gg + geom_line(aes( x=xx, y=yy2 )) # add the second line!
print(gg)

一般情况下,如果您想要在初始qplot / ggplot来电中未提供的情节中添加其他信息,请将其输入aes。你想要一条线?使用geom_line。你想要新的x和y坐标?然后使用geom_line(aes(x= .., y=..))。等等。

答案 1 :(得分:1)

使用ggplot的略微更规范的方法可能是创建一个long data.frame并将每个感兴趣的变量映射到美学。这提供了一种自动添加图例等的简便方法。这也比每次想要新行时添加单个图层更容易。这是一个例子:

library(ggplot2)
library(reshape2)
#Thanks mathematical coffee for data
dat <- data.frame(xx  = sort(runif(20))
                  , yy  = runif(20)
                  , yy2 = runif(20))

#Melt into long format, using xx as the ID variable
dat.m <- melt(dat, id.vars = "xx")

#What does this look like now?
> head(dat.m,3)
           xx variable     value
1 0.001895333       yy 0.1240757
2 0.037347893       yy 0.8760621
3 0.086915655       yy 0.4068837

#use ggplot and set the group and colour aesthetic to the variable column. This adds a legend
ggplot(dat.m, aes(xx, value, group = variable, colour = variable)) + 
  geom_line()

enter image description here