簡體   English   中英

在ggplot(geom_line)中手動調整行colors

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM