[英]Manually adjust line colors in ggplot (geom_line)
我有一些數據想在 ggplot 中使用geom_line
進行可視化。 數據集中有兩個類別,所以我使用手動 colors 黑色和紅色作為它們。 我也有每條移動平均線,這意味着我總共有四條線。
我面臨的問題是移動平均線在 plot 中不是很清楚,我想區分它們(最好使用顏色)。 目前,我可以為兩條移動平均線設置相同的顏色(例如黃色)或獲取原始數據的顏色(紅色和黑色)。
我想要做的是為移動平均線設置兩個新的 colors 並在圖例中顯示它們。 你能幫忙嗎?
這是一個示例代碼。
# 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"))
在這個 plot 中,我希望兩條新的 colors 顯示兩條黃線。 也歡迎其他有助於區分此類大型數據集中的兩條線的建議。
您可以使用移動平均線創建新列,獲取長格式數據,然后獲取 plot 以便您可以獲得所有 4 colors 的圖例。
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"))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.