我有以下数据集(类: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)
我希望制作一个包含两个功能的情节。具有多种功能的示例如下图所示:
Multiple functions in one plot
我写了以下(删节)代码:
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))
我能够生成具有所需轴的绘图,但不显示任何功能。我尝试了多种解决方案,但没有运气。
有没有人知道我该怎么办?
答案 0 :(得分:6)
以下情况如何?
library(tidyverse);
df %>%
gather(what, value, S:D) %>%
ggplot(aes(Date, value, colour = what)) +
geom_line()
通常最好将数据从长到长重新整形,然后添加不同的美学(此处为colour
)以映射不同的曲线。 dplyr::gather
会将您的数据从宽转换为长,其中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)