我有一些数据要在 ggplot 中使用 geom_line
进行可视化。数据集中有两个类别,因此我为它们使用手动颜色黑色和红色。我还有每条移动平均线,这意味着我总共有四条线。
我面临的问题是图中的移动平均线不是很清楚,我想区分它们(最好使用颜色)。目前,我可以为两条移动平均线设置相同的颜色(例如黄色)或获取原始数据的颜色(红色和黑色)。
我想要做的是为移动平均线设置两种新颜色,并在图例中显示它们。 你能帮忙吗?
这是一个示例代码。
# rm(list = ls())
library(ggplot2)
X <- as.numeric(1:500)
df <- data.frame(x=X,y=rnorm(n=500,sd=.2)+sin(X*pi/110),gp=1)
for (i in 2) df <- rbind(df,data.frame(x=X,y=rnorm(n = 500,sd = .1)+sin(X*i*pi/200),gp=i))
### Classify as character ###
df$gp <- as.character(df$gp)
### Plot ###
ggplot(data = df,aes(x=x,y=y,group=gp,color=gp)) +
geom_line() +
geom_line(aes(y=rollmean(y, 15, na.pad=TRUE)), size=1, color="yellow") +
theme_bw() +
scale_colour_manual("", values = c("red", "black")) +
guides(colour=guide_legend(title="Model"))
在此图中,我希望用两种新颜色显示两条黄线。 也欢迎其他有助于区分如此大数据集中的两条线的建议。
答案 0 :(得分:0)
您可以创建具有移动平均值的新列,以长格式获取数据,然后进行绘图,以便获得所有 4 种颜色的图例。
library(tidyverse)
library(zoo)
df %>%
group_by(gp) %>%
mutate(moving_avg = rollmean(y, 15, na.pad=TRUE)) %>%
ungroup %>%
pivot_longer(cols = c(y, moving_avg)) %>%
unite(col, name, gp) %>%
ggplot(aes(x=x,y=value,color=col)) +
geom_line() +
theme_bw() +
guides(colour=guide_legend(title="Model"))