将注释放置在y轴上带有TRUE和FALSE的ggplot上
下面的代码做了我需要的两个简化图,但是需要y位置的幻数,而不是计算(注释掉)将注释放置在y轴上带有TRUE和FALSE的ggplot上,r,ggplot2,R,Ggplot2,下面的代码做了我需要的两个简化图,但是需要y位置的幻数,而不是计算(注释掉) df1函数getYplace做你想做的事。它检查向量是否为真/假并返回1.5,或者是否为数字,然后返回两个数字之间的平均值 getYplace <- function(Y) { if (is.numeric(Y)) { res <- mean(unique(Y)) } else { res <- 1.5 } return(res) }
df1函数getYplace
做你想做的事。它检查向量是否为真/假并返回1.5
,或者是否为数字,然后返回两个数字之间的平均值
getYplace <- function(Y) {
if (is.numeric(Y)) {
res <- mean(unique(Y))
} else {
res <- 1.5
}
return(res)
}
library(ggplot2)
ggplot(df1, aes(x, y)) +
geom_point() +
annotate("text", label = "read me", x = mean(df1$x), y = getYplace(df1$y))
ggplot(df2, aes(x, y)) +
geom_point() +
annotate("text", label = "read me", x = mean(df2$x), y = getYplace(df2$y))
getYplace我相信确定注释的y值将与前面提到的因子平均值一样有效,只要它们是数值。如果它们不是数字,则因子将被分配计数编号,1,2,3
所以下面的方法可能适用于所有两个因子向量,但我觉得它不是很优雅,并且计算了两次丑陋的平均值
yplace1 = if(is.na(mean(as.numeric(levels(as.factor(df1$y))))))
1.5
else
mean(as.numeric(levels(as.factor(df1$y))))
我希望你不介意,我发现is.logical()和unique()非常有用,所以我调整了你的条件以涵盖所有情况,而不仅仅是逻辑。@mightyple哦,我明白了,很乐意帮忙:-)
yplace1 = if(is.na(mean(as.numeric(levels(as.factor(df1$y))))))
1.5
else
mean(as.numeric(levels(as.factor(df1$y))))