我正在尝试从剧情切换到ggplot2并遇到一些真正的麻烦。下面,我附上了一些非常简化的代码,用于我想要获得的情节:
x <- seq(1, 20, by=1)
y <- seq(1,40, by=2)
date <- seq(as.Date("2000/1/1"), as.Date("2001/8/1"), by = "month")
# I create a data frame with the date and TWO time series
datframe <- data.frame(date,x,y)
然后,我想绘制x和y两个系列,日期在x轴上。我想第一个系列用红色虚线显示,第二个系列用黑色线显示,以及获得一个图例。这是我到目前为止使用的ggplot2代码:
ggplot() + geom_line(data = datframe, aes(x=date, y=datframe$x,group="x"), linetype="dotted", color="red") +
geom_line(data = datframe,aes(x = datframe $ date,y = datframe $ y,linetype =“y”),color =“black”)
嗯,问题是我只有一个图例条目,我不知道如何更改它。我真的很感激一些提示,我已经花了很长时间在一个简单的图表上,无法弄明白。我认为对于高级用户来说这可能是显而易见的,对于初学者的问题很抱歉,但我提前感谢你们提供任何帮助。
答案 0 :(得分:1)
我建议先整理数据集(将其从宽变为长),然后使用scale_linetype|color_manual
:
library(tidyverse)
datframe.tidy <- gather(datframe, metric, value, -date)
my_legend_title <- c("Legend Title")
ggplot(datframe.tidy, aes(x = date, y = value, color = metric)) +
geom_line(aes(linetype = metric)) +
scale_linetype_manual(my_legend_title, values = c("dotted", "solid")) +
scale_color_manual(my_legend_title, values = c("red", "black")) +
labs(title = "My Plot Title",
subtitle = "Subtitle",
x = "x-axis title",
y = "y-axis title"
或者,您可以在审美调用中使用I()
并与scale_color_manual
一起使用,但这会让您觉得更“hacky”:
ggplot(datframe, aes(x = date)) +
geom_line(aes(y = x, color = I("red")), linetype = "dotted") +
geom_line(aes(y = y, color = I("black")), linetype = "solid") +
labs(color = "My Legend Title") +
scale_color_manual(values = c("black", "red"))
答案 1 :(得分:1)