使用ggplot2在同一图上绘制点和线

时间:2016-07-13 12:39:36

标签: r ggplot2

我想使用ggplot2在同一个地块上绘制两条散点图。我还想指定颜色。

dat <- data.frame(x = 1:10, y1 = 2:11, y2 = 3:12)
ggplot(dat, aes(x)) + geom_line(aes(y = y1, color = "y1"), color = "blue") + geom_line(aes(y = y2, color = "y2"), color = "red") + geom_point(aes(y = y1), color = "blue") + geom_point(aes(y = y2), color = "red")

两个问题:

  1. 如何显示图例?
  2. 我是ggplot2的新手。我相信必须有一个更简单的方法来做到这一点。请给我看。感谢。
  3. enter image description here

1 个答案:

答案 0 :(得分:1)

您需要使用melt中的reshape2功能,使用ggplot2轻松完成此操作:

enter image description here

dat <- data.frame(x = 1:10, y1 = 2:11, y2 = 3:12)

library(reshape2)
dat.melt = melt(dat, id = "x")
> print(dat.melt)
    x variable value
1   1       y1     2
2   2       y1     3
3   3       y1     4
4   4       y1     5
5   5       y1     6
6   6       y1     7
7   7       y1     8
8   8       y1     9
9   9       y1    10
10 10       y1    11
11  1       y2     3
12  2       y2     4
13  3       y2     5
14  4       y2     6
15  5       y2     7
16  6       y2     8
17  7       y2     9
18  8       y2    10
19  9       y2    11
20 10       y2    12

ggplot(dat.melt, aes(x = x, y = value, color = variable)) + geom_line() + geom_point()

修改 添加+ scale_color_manual以手动设置颜色: enter image description here

ggplot(dat.melt, aes(x = x, y = value, color = variable)) + geom_line() + geom_point() + 
scale_color_manual("legend", values = c("y1" = "darkgreen", "y2" = "purple"))