同一个图上有两个geom_line和geom_point

时间:2018-04-27 05:26:47

标签: r ggplot2

我有一个数据框df,看起来像这样

    > dput(head(df))
    structure(list(Percent = c(1, 2, 3, 4, 5), Test = c(4, 2, 3, 
    5, 2), Train = c(10, 12, 10, 13, 15)), .Names = c("Percent", 
    "Test", "Train"), row.names = c(NA, 5L), class = "data.frame")

看起来像这样

Percent    Test    Train
1          4       10
2          2       12
3          3       10
4          5       13
5          2       15

如何将TestTrain绘制成ggplot的两行?

我现在有这样的事情

ggplot(dfk, aes(x = Percent, y = Test)) + geom_point() + 
  geom_line() 

我还想在地块上添加Train点和线连接,并在图例中使用不同的颜色和标签。我不知道该怎么做。

enter image description here

1 个答案:

答案 0 :(得分:3)

有两种方法,可以预先添加图层或重组数据。

添加图层:

ggplot(df, aes(x = Percent)) + 
  geom_point(aes(y = Test), colour = "red") + 
  geom_line(aes(y = Test), colour = "red") + 
  geom_point(aes(y = Train), colour = "blue") + 
  geom_line(aes(y = Train), colour = "blue")

重组您的数据:

df2 <- tidyr::gather(df, key = type, value = value, -Percent)

ggplot(df2, aes(x = Percent, y = value, colour = type)) +
 geom_point() +
 geom_line()

选项2通常是首选,因为它可以发挥ggplot2的优势和优雅。