R ggplot条件颜色没有完全匹配

时间:2018-03-09 22:14:47

标签: r colors conditional

如果它们高于或低于ggplot2中的年平均值,我试图在有条件的行中对点进行着色,并且我找不到颜色与值不完全匹配的任何帮助。

我使用以下代码:

ggplot(aes(x = M, y = O)) + geom_line()

如果O高于平均值(O)或以下,我希望它是一种颜色。

我尝试按照建议操作,但在使用时我只得到一个拆分图:

mutate(color=ifelse(O>mean(O),"green","red")) %>%  ggplot(aes(x=M,y=O,color=color))+geom_line()+scale_color_manual(values=c("red", "darkgreen"))

我得到以下图表:

enter image description here

2 个答案:

答案 0 :(得分:0)

这样可行,但在行中休息。

library(tidyverse)
df <- data.frame(
  M = 1:5,
  O = c(1, 2, 3, 4, 5)
)

df <- mutate(df, above = O > mean(O))
ggplot(df, aes(x=M,y=O, color=above))+geom_line()

答案 1 :(得分:0)

构建变量color以标记颜色类型。

点数使用geom_point(),而不是geom_line()

编辑:color选项将数据拆分为2组。使用group=1(所有值为一个值)强制使用单个组。

建议:避免命名变量O,与0(零)存在很大的混淆。

library(tidyverse)

df <- data.frame(M=rnorm(10), O=rnorm(10)) %>% 
  mutate(color=ifelse(O > mean(O), T, F))

#ggplot(df, aes(x=M, y=O, color = color)) + geom_point()
ggplot(df, aes(x=M, y=O, color = color, group=1)) + geom_line() + scale_color_manual(values=c("red", "green"))


# > df
#             M           O color
# 1   0.05829207 -0.03490925 FALSE
# 2  -0.09255111 -0.52513201 FALSE
# 3   0.44859944  0.19371037 FALSE
# 4  -0.54216222  0.40783749  TRUE