gpt4 book ai didi

r - 如何有条件地突出显示ggplot2构面图中的点-将颜色映射到列

转载 作者:行者123 更新时间:2023-12-04 16:40:06 26 4
gpt4 key购买 nike

在下面的示例中,我创建了两个点系列,并使用ggplot2对其进行了绘制。我还根据它们的值(value)强调了几点

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')))

这是结果

现在,我想将两个 case分为两个方面,保持突出显示方案
> 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

如何做到这一点?

最佳答案

您应该将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()

关于r - 如何有条件地突出显示ggplot2构面图中的点-将颜色映射到列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15804504/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com