如何在 ggplot2 (R) 的条形图中更改 geom_text 的颜色和位置?
How to change colour and position of geom_text for just one bar in a barplot in ggplot2 (R)?
我正在尝试使用 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)
使用此代码,group3 没有标签,因为也没有栏。我想在 x 轴上方仍然有一个黑色的标签。
只需添加另一个 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 的组。
通过条件逻辑:
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
这种方法的优点:
- 它会自动处理大小值
- 您不需要第二个数据框或 geom
这种方法的注意事项:
- 硬编码为
> 3
的内容应针对每个可视化进行校准。如果您深入了解 ggplot2 如何构建图形,可以 自动化该部分,但对于这个小示例来说,这将是过大的杀伤力。
我正在尝试使用 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)
使用此代码,group3 没有标签,因为也没有栏。我想在 x 轴上方仍然有一个黑色的标签。
只需添加另一个 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 的组。
通过条件逻辑:
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
这种方法的优点:
- 它会自动处理大小值
- 您不需要第二个数据框或 geom
这种方法的注意事项:
- 硬编码为
> 3
的内容应针对每个可视化进行校准。如果您深入了解 ggplot2 如何构建图形,可以 自动化该部分,但对于这个小示例来说,这将是过大的杀伤力。