如何在一张图上绘制两条线。这是我的代码:
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
答案 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"))
这样做:
您也可以融化数据:
> 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)