[英]ggplot2: change the color of error bars w/o losing customized dodge parameters
我想將誤差線的顏色更改為不同的顏色,而無需更改圖形上點的位置。
這是我的一些數據:
df <- structure(
list(
yrmonth = structure(
c(
1483228800,
1483228800,
1483228800,
1485907200,
1485907200,
1485907200,
1488326400,
1488326400,
1488326400,
1491004800,
1491004800,
1491004800
),
class = c("POSIXct", "POSIXt"),
tzone = "UTC"
),
index = structure(
c(1L, 3L, 5L, 1L, 3L, 5L, 1L, 3L, 5L, 1L, 3L, 5L),
.Label = c("N-S", "N-S", "E-W", "E-W", "OS"),
class = "factor"
),
N = c(2, 2, 1, 2, 2, 1, 2, 2, 1, 2, 2, 1),
GDDLettuce = c(129, 141, 27, 150.5, 209, 87, 247.5,
243, 188, 223, 226.5, 170),
sd = c(
1.4142135623731,
4.24264068711928,
NA,
4.94974746830583,
65.0538238691624,
NA,
12.0208152801713,
8.48528137423857,
NA,
5.65685424949238,
0.707106781186548,
NA
),
se = c(1, 3, NA, 3.5, 46, NA, 8.5, 6, NA, 4, 0.5, NA),
ci = c(
12.7062047361747,
38.1186142085241,
NA,
44.4717165766114,
584.485417864036,
NA,
108.002740257485,
76.2372284170481,
NA,
50.8248189446988,
6.35310236808735,
NA
)
),
.Names = c("yrmonth", "index", "N", "data", "sd", "se", "ci"),
row.names = 31:42,
class = "data.frame"
)
我的圖形完全按照我想要的方式設置,並在正確的位置顯示了誤差線:
ggplot(df, aes(x=yrmonth,y=data,colour=factor(index))) +
geom_line(size=1, position = position_dodge(width = -300000)) + ylim(min(df$data), max(df$data)) +
geom_errorbar(aes(ymin=data-se, ymax=data+se), width = 1000000, size = .5,
position = position_dodge(width = -300000))
當我添加一種顏色時,條形的顏色會發生變化,但會刪除我輸入的所有width和dodge參數:
ggplot(df, aes(x=yrmonth,y=data,colour=factor(index))) +
geom_line(size=1, position = position_dodge(width = -300000)) + ylim(min(df$data), max(df$data)) +
geom_errorbar(aes(ymin=data-se, ymax=data+se), colour = "black", width = 1000000, size = .5,
position = position_dodge(width = -300000))
我希望EW錯誤欄為深綠色,NS錯誤欄為深紅色。 我希望線條本身保持相同的顏色。 最重要的是,我希望誤差線保持在相同的位置。 由於某種原因,每次更改顏色時,錯誤條和錯誤線的位置都會發生變化。
嘗試在您的第一個繪圖代碼中再添加一個scale_color_manual
層,如下所示:
ggplot(df, aes(x=yrmonth,y=data,colour=factor(index))) +
geom_line(size=1, position = position_dodge(width = -300000)) + ylim(min(df$data), max(df$data)) +
geom_errorbar(aes(ymin=data-se, ymax=data+se), width = 1000000, size = .5,
position = position_dodge(width = -300000))+
scale_color_manual(values = c('darkblue', 'darkgreen', 'darkred'))
一個快速簡便的解決方案是
require(dplyr)
ggplot(df %>% mutate(errorColors = ifelse(index=="N-S","darkred",ifelse(index=="E-W","darkgreen",NA))), aes(x=yrmonth,y=data)) +
geom_line(aes(group=index,color=index),size=1, position = position_dodge(width = -300000)) + ylim(min(df$data), max(df$data)) +
geom_errorbar(aes(ymin=data-se, ymax=data+se,color=errorColors), width = 1000000, size = .5,
position = position_dodge(width = -300000))+scale_color_manual(breaks=c("E-W","N-S","OS"),values=c("darkgreen","darkred","green","red","blue"))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.