一张图上有两行

时间:2014-04-09 13:03:39

标签: r

如何在一张图上绘制两条线。这是我的代码:

data <- read.csv(file='best_duty_distribution.csv', header = TRUE, sep = " ")

ggplot() +
  geom_line(data, aes(x=p1_b, y=b1, color = "red")) +
  geom_line(data, aes(x=p1_b, y=f1, color = "blue")) 

但我收到错误:

Ошибка: ggplot2 doesn't know how to deal with data of class uneval

此代码工作正常,但只绘制一行:

ggplot(data, aes(x=p1_b, y=b1)) + geom_line() + geom_point()

更新

数据示例:

> head(data, 4)
  p1_b p2_b p3_b b1 f1 b2 f2 b3  f3  X
1    0    0    0  0 40  0 20  0 160 NA
2    0    0    1  0 40  0 20  4 152 NA
3    0    0    2  0 40  0 20  8 144 NA
4    0    0    3  0 40  0 20 12 136 NA

3 个答案:

答案 0 :(得分:1)

我不知道你的数据是什么样的,但这画了两行:

df <- data.frame(a=1:15, x=rnorm(15), y=rnorm(15))
library(ggplot2)
p <- ggplot(df, aes_string(x="a", y="x")) + geom_line(colour="red")
p <- p + geom_line(data=df, aes_string(x="a", y="y"), colour="blue")
p

答案 1 :(得分:1)

尝试使用小块图,你可以自己构建图:

> df <- data.frame(x=1:6,y1=1:6,y2=2:7)
> ggplot(df, aes(x)) + geom_line(aes(y=y1,colour="blue")) + geom_line(aes(y=y2,colour="red"))

这样做:

enter image description here

您也可以融化数据:

> library(reshape)
> df2 <- melt(df,id="x")
> ggplot(df2, aes(x=x,y=value,colour=variable)) + geom_line()

答案 2 :(得分:1)

geom期望第一个未命名的参数是映射,第二个是数据。命名你的论点或反转它们:

ggplot() +
  geom_line(data=data, aes(x=p1_b, y=b1, color = "red")) +
  geom_line(data=data, aes(x=p1_b, y=f1, color = "blue"))

,或者

ggplot() +
  geom_line(aes(x=p1_b, y=b1, color = "red"), data) +
  geom_line(aes(x=p1_b, y=f1, color = "blue"), data)