R 如何在ggplot图形的单个轴内获得具有不同颜色的轴标记标签?

R 如何在ggplot图形的单个轴内获得具有不同颜色的轴标记标签?,r,ggplot2,R,Ggplot2,考虑一个简单的ggplot2图 library(ggplot2) dat <- data.frame(name=c("apple", "orange", "plum"),value=c(3,8,2),outlier=c(FALSE,TRUE,FALSE)) ggplot(dat)+geom_point(aes(x=value,y=name)) 库(ggplot2) dat我认为这不如给离群点本身着色好,但你可以把它砍掉: p <- ggplot(dat)+geom_point(a

考虑一个简单的ggplot2图

library(ggplot2) 
dat <- data.frame(name=c("apple", "orange", "plum"),value=c(3,8,2),outlier=c(FALSE,TRUE,FALSE))
ggplot(dat)+geom_point(aes(x=value,y=name))
库(ggplot2)

dat我认为这不如给离群点本身着色好,但你可以把它砍掉:

p <- ggplot(dat)+geom_point(aes(x=value,y=name))
g <- ggplotGrob(p)

#I found this by using str(g) and looking for "axis.text.y.text"
#there is probably a clever way of automating this
g[[1]][[2]]$children$axis$grobs[[1]]$gp$col <- c("grey50", "red", "grey50")

plot(g)
p一种更简单的方法(IMO)就是创建一个条件颜色向量,并将其解析为
axis.text.y

dat <- data.frame(name=c("apple", "orange", "plum"),value=c(3,8,2),outlier=c(FALSE,TRUE,FALSE))
colvec <- character(dim(dat)[1])
colvec <- ifelse(dat$outlier, "red", "black")

library(ggplot2) 
ggplot(dat) +
geom_point(data = dat, aes(x=value,y=name)) +
theme(axis.text.y = element_text(colour=colvec))

我不同意你最后一句话。如果要突出显示“异常值”,请给点上色。关于这个问题:是的,这是可能的。然而,这并不容易,因为ggplot2并不是设计来实现这一点的。因此,您可能必须生成grob并对其进行破解。实际上,此功能是我们的平面设计师要求的。实际的图形比这个简单的示例密集得多,轴上有长标签。我们使用颜色修改稍微减轻非异常点的名称。异常值名称突然出现,这正是图表的目的。这对沟通来说相当有效,真的;)可能是重复的谢谢,这绝对是正确的选择。我将努力找出如何自动化grob的本地化。我还不太熟悉GTTable结构。对于无条件绘图,您可以只做
ggplot(dat)+geom_point(data=dat,aes(x=value,y=name))+主题(axis.text.y=element_text(color=c(“grey50”,“red”,“grey50”))
非常感谢!如果使用
刻面网格(…,scales=“free_y”)
绘制图形,则该方法似乎不再适用,因为颜色向量通过刻面循环。对那个案子有什么想法?我想这可能是个新问题