如何正确突出显示使用构面的ggplot2图中的点

Bor*_*lik 5 plot r ggplot2

在下面的示例中,我创建了两个点系列并使用它们绘制它们ggplot2.我还根据他们的价值观强调了几点

library(ggplot2)
x <- seq(0, 6, .5)
y.a <- .1 * x -.1
y.b <- sin(x)
df <- data.frame(x=x, y=y.a, case='a')
df <- rbind(df, data.frame(x=x, y=y.b, case='b'))
print(ggplot(df) + geom_point(aes(x, y), color=ifelse(df$y<0, 'red', 'black')))
Run Code Online (Sandbox Code Playgroud)

这是结果

第一个结果

现在我想将两个cases分成两个方面,保持突出显示方案

> print(ggplot(df) + geom_point(aes(x, y), color=ifelse(df$y<0, 'red', 'black')) + facet_grid(case ~. ,))
Error: Incompatible lengths for set aesthetics: colour
Run Code Online (Sandbox Code Playgroud)

如何实现这一目标?

Did*_*rts 15

你应该把它放在color=ifelse(y<0, 'red', 'black')里面aes(),所以颜色将根据每个面中的y值独立设置.如果将颜色设置在aes()之外作为矢量,则在两个面中使用相同的矢量(具有相同的长度),然后由于颜色矢量的长度作为数据点的数量而变大,因此会出现错误.

然后你应该添加scale_color_identity()以确保直接解释颜色名称.

ggplot(df) + geom_point(aes(x, y, color=ifelse(y<0, 'red', 'black'))) + 
   facet_grid(case ~. ,)+scale_color_identity()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述