我想将标签添加到ggplot2栏中,并更改标签的颜色。我不知何故。
我的数据集大约(简化)为以下格式:
data$value <- runif(27, min=10, max=60)
data$A <- factor((rep(1:3, each=9)))
data$B <- factor((rep(1:9, each=3)))
data$variable <- factor(rep(rep(1:3),9))
情节如下:
three <- c(pink="#BD1550",dark="#490A3D",blue1="#0b6fa1",white="#FFFFFF", "#FFFFFF")
m<- data %>% group_by(A, variable) %>% summarise(mean=mean(value), sd=sd(value)) %>%
ggplot(aes(x=A,fill=variable)) +
geom_col(aes(y=mean),position="stack")+
geom_text(aes(label=round(mean,digits=2),y=mean, colour="white")
,size=3, show.legend = F, position = position_stack(vjust = 0.5))+
scale_fill_manual(values=three) + theme(legend.position="right")
现在,我尝试使用geom_text中的颜色:
不同的解决方案为每个标签提供了不同的颜色,分别是我的字符串“三”中的粉红色,橙色,绿色和蓝色,但从来没有给我白色。我也尝试过使其颜色不同于白色,但是不知何故我无法控制它能带给我什么颜色。
我没有收到任何错误消息。
我开始耗尽想法。任何人有解决方案吗?
答案 0 :(得分:0)
问题是您正在aes()
内部的颜色美感上映射“白色”。这样ggplot
认为您想在颜色美学上映射一个变量,即“白色”不被解释为颜色的名称。相反,ggplot
只是从其默认调色板“红色”中选择颜色。只需将颜色作为参数传递给geom_text
之外的aes()
。或使用scale_color_manual
设置调色板。 (;试试这个:
library(ggplot2)
library(dplyr)
set.seed(42)
data <- data.frame(
value = runif(27, min=10, max=60),
A = factor((rep(1:3, each=9))),
B = factor((rep(1:9, each=3))),
variable = factor(rep(rep(1:3),9))
)
three <- c(pink="#BD1550",dark="#490A3D",blue1="#0b6fa1", white="#FFFFFF", "#FFFFFF")
m <- data %>%
group_by(A, variable) %>%
summarise(mean=mean(value), sd=sd(value)) %>%
ggplot(aes(x=A, fill=variable)) +
geom_col(aes(y = mean),position="stack")+
geom_text(aes(label = round(mean, digits=2), y=mean), colour="white"
,size=3, show.legend = F, position = position_stack(vjust = 0.5))+
scale_fill_manual(values=three) + theme(legend.position="right")
m
由reprex package(v0.3.0)于2020-04-14创建