我有一个包含3列的数据框,名为x1
,y1a
和y1b
。
x1
是从2015-01-01
到2015-04-30
的日期序列。列y1a
和y1b
包含与x1
中每个日期对应的值。我想绘制一个图表,其中包含y1a
和y1b
对x1
的线图,并提供标签。
我试过了
x1 <- seq(as.Date("2015-01-01"), as.Date("2015-04-30"), by = "day")
y1a <- rnorm(length(x1))
y1b <- rnorm(length(x1))
plot.co.one <- data.frame(x1, y1a, y1b)
require(ggplot2)
ggplot(plot.co.one, aes(x1)) +
geom_line(aes(y=y1a), colour = "red") +
geom_line(aes(y=y1b), colour = "green")
但不知何故,它不会显示标签。
答案 0 :(得分:0)
诀窍是将颜色映射(未设置)到变量,使其出现在图例中!
以下是一些示例数据集和图
library(ggplot2)
x1 <- seq(as.Date("2015-01-01"), as.Date("2015-04-30"), by = "day")
y1a <- rnorm(length(x1))
y1b <- rnorm(length(x1))
plot.co.one <- data.frame(x1, y1a, y1b)
ggplot(plot.co.one, aes(x = x1)) +
geom_line(aes(y = y1a, colour = "Line 1")) +
geom_line(aes(y = y1b, colour = "Line 2")) +
labs(colour = "Timeseries")
作为替代方案,您始终可以将列合并为一个,然后绘制
library(tidyr)
library(dplyr)
alternative <- plot.co.one %>%
rename("Line 1" = y1a, "Line 2" = y1b) %>%
gather("Timeseries", "Value", `Line 1`:`Line 2`)
ggplot(alternative, aes(x = x1, y = Value, colour = Timeseries)) +
geom_line()
这给出了相同的结果(轴标签除外)。
答案 1 :(得分:-1)
我认为R不会将Date_2015识别为班级&#34;日期&#34;。
如果你改变&#34; x1&lt; - Date_2015&#34;进入&#34; x1&lt; - as.Date(Date_2015)&#34;,也许它会工作。
[编辑]抱歉,我无法理解你的问题。
library(ggplot2); library(tidyr)
# Using Mr. Manuel's code, thanks.
x1 <- seq(as.Date("2015-01-01"), as.Date("2015-04-30"), by = "day")
y1a <- rnorm(length(x1))
y1b <- rnorm(length(x1))
plot.co.one <- data.frame(x1, y1a, y1b)
# "key" becomes a col name, and a legend title. Value also becomes col name and ylab.
plot.co.one2 <- gather(plot.co.one, key="y1_ab", value = y1, -x1)
ggplot(plot.co.one2, aes(x = x1, y = y1, colour = y1_ab)) + geom_line() +
scale_colour_manual(values = c("red", "green"))