我正在尝试创建一个条形图,并使用ggplot2在条形图中写入所描绘的值。我仍然想用值“ 0”标记该组,但使用不同的颜色(黑色)并且在x轴上方。我该如何更改这一geom_text的位置和颜色?
我已经尝试过将矢量输入到scale_colour_manual中,但是它不起作用(或者我没有正确执行)。
data <- read.table(text = "group percentage
group1 30
group2 29
group3 0
group4 18", header=TRUE)
library(ggplot2)
ggplot(data, aes(x=group, y=percentage))+
theme_bw()+
geom_bar(stat = 'identity', position = "dodge", fill="#13449f")+
geom_text(aes(label = percentage), position = position_dodge(0.9),
vjust=1.3, colour = "white", size=6)
使用此代码,因为也不存在条,所以组3没有标签。我想在x轴上方还有一个黑色标签。
答案 0 :(得分:1)
只需添加另一个geom_text层。例如
ggplot(data, aes(x=group, y=percentage))+
theme_bw()+
geom_bar(stat = 'identity', position = "dodge", fill="#13449f")+
geom_text(aes(label = percentage), position = position_dodge(0.9),
vjust=1.3, colour = "white", size=6) +
geom_text(aes(label = "0", y=1), data=subset(data, percentage==0), size=6)
在这里,我们将图层数据更改为仅包括那些具有0的组。
答案 1 :(得分:0)
通过条件逻辑:
library(ggplot2)
ggplot(data, aes(x = group, y = percentage))+
theme_bw()+
geom_bar(stat = 'identity', position = "dodge", fill = "#13449f") +
geom_text(aes(label = percentage), position = position_dodge(0.9),
vjust = ifelse(data$percentage > 3, 1.3, -0.3),
colour = ifelse(data$percentage > 3, "white", "black"),
size = 6)
使用group3 == 3.1
这种方法的舒适之处:
这种方法的要点:
> 3
的内容。如果深入研究ggplot2如何构建图形,可能会自动该部分,但是对于这个小例子来说,这可能会显得过份。