如果它们高于或低于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"))
我得到以下图表:
答案 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