在同一帧中绘制两个函数

Mad*_*ds 2 r ggplot2

我有以下数据集(类:dataframe)

data2 <- read.table(text =
"Date         S        D
199011  1.023247 1.009845
199012  1.050828 1.015818
199101  1.066754 1.023077
199102  1.147112 1.033462
199103  1.160859 1.042610
199104  1.164412 1.049691
199105  1.204586 1.058778
199106  1.173015 1.063795
199107  1.220449 1.074115
199108  1.210946 1.075537
199109  1.219717 1.076117
199110  1.256516 1.080941
199111  1.220505 1.087333
199112  1.288720 1.100406
199201  1.306862 1.106454
199202  1.304459 1.108409
199203  1.255841 1.111392
199204  1.243667 1.113684
199205  1.286353 1.126754
199206  1.262842 1.131144
199207  1.283566 1.138307", header = TRUE)
Run Code Online (Sandbox Code Playgroud)

我想制作一个包含两个功能的情节.具有多种功能的示例如下图所示:

一个图中的多个功能

我写了以下(删节)代码:

library(ggplot2)
ggplot(data2, aes(Date)) +              
geom_line(aes(y= D), colour="red") +  
geom_line(aes(y=S), colour="green") + 
ylab(label="Return") + 
scale_x_continuous(name="Date", limits = c(1990, 2017))
Run Code Online (Sandbox Code Playgroud)

我能够生成具有所需轴的绘图,但不显示任何功能.我尝试了多种解决方案,但没有运气.

有谁知道我该怎么办?

Mau*_*ers 6

以下怎么样?

library(tidyverse);
df %>%
    gather(what, value, S:D) %>%
    ggplot(aes(Date, value, colour = what)) +
    geom_line()
Run Code Online (Sandbox Code Playgroud)

通常最好将数据从宽到长重新整形,然后添加不同的美学(此处colour)以映射不同的曲线.dplyr::gather将您的数据从wide转换为long,其中what对列进行编码.

在此输入图像描述


样本数据

df <- read.table(text =
    "Date         S        D
199011  1.023247 1.009845
199012  1.050828 1.015818
199101  1.066754 1.023077
199102  1.147112 1.033462
199103  1.160859 1.042610
199104  1.164412 1.049691
199105  1.204586 1.058778
199106  1.173015 1.063795
199107  1.220449 1.074115
199108  1.210946 1.075537
199109  1.219717 1.076117
199110  1.256516 1.080941
199111  1.220505 1.087333
199112  1.288720 1.100406
199201  1.306862 1.106454
199202  1.304459 1.108409
199203  1.255841 1.111392
199204  1.243667 1.113684
199205  1.286353 1.126754
199206  1.262842 1.131144
199207  1.283566 1.138307", header = T)
Run Code Online (Sandbox Code Playgroud)