我想在一个图中按时间绘制3列数据(x,y,z),标签为3列名(“x”,“y”,“z”)。
我使用以下代码进行绘图,但不知道如何添加标签
p <- ggplot() +
geom_line(aes(time, x), df, colour = "red") +
geom_line(aes(time, y), df, colour = "blue") +
geom_line(aes(time, z), df,colour = I("darkgreen")) +
xlab("Time") + ylab("value")
这是你想要的吗?
ggplot(data = df) +
geom_line(aes(time, x, color = "X")) +
geom_line(aes(time, y, color = "Y")) +
geom_line(aes(time, z, color = "Z")) +
xlab("Time") +
ylab("value") +
labs(color = "YOUR LEGEND TITLE")
虽然@akrun是对的,但将数据转换为长格式将是这里的方法:
library(reshape2)
df <- melt(df, id.vars = "time")
> df
time variable value
1 1 x 1
2 2 x 2
3 3 x 3
4 4 x 4
5 1 y 2
6 2 y 4
7 3 y 6
8 4 y 8
9 1 z 1
10 2 z 3
11 3 z 5
12 4 z 7
然后
ggplot(data = df, aes(x = time, y = value, color = variable)) +
geom_line() +
xlab("Time") +
ylab("value") +
labs(color = "YOUR LEGEND TITLE")
图例标题是可选的btw:
ggplot(data = df, aes(x = time, y = value, color = variable)) +
geom_line() +
xlab("Time") +
ylab("value") +
labs(color = "")
您可以使用scale_colour_manual
来显示图例。修改后的代码如下所示:
p <- ggplot(df, aes(x,y,z)) +
geom_line(aes(time, x, colour = "x")) +
geom_line(aes(time, y, colour = "y")) +
geom_line(aes(time, z,colour = "z")) +
scale_colour_manual("",
breaks = c("x", "y", "z"),
values = c("red", "blue", "green")) +
xlab("Time") + ylab("value")