r - 如何添加以字符变量为条件的 geom_text?
问题描述
我有一个具有四个不同名称(a、b、c、d)的字符变量。我使用以下代码绘制它们的值:
ggplot(df)+
geom_point(aes(val, name))
但是,我想在绘图上添加一个可以在字符变量中区分的文本。例如,介于a
和b
我想写“组 1”和介于c
和d
我想写“组 2”。这样读者就可以理解在同一组中存在子组。我geom_text
以前在一个有两个数字变量的图上使用过,但是当有一个数字和一个字符变量时,我不知道该怎么做。
这是我得到的情节:
这是数据:
structure(list(name = structure(c("a", "b", "c", "d"), format.stata = "%9s"),
val = c(2, 4, 1.5, 3)), row.names = c(NA, -4L), class = "data.frame")
解决方案
您可以执行以下操作:
library(tidyverse)
df <- structure(list(name = structure(c("a", "b", "c", "d"), format.stata = "%9s"),
val = c(2, 4, 1.5, 3)), row.names = c(NA, -4L), class = "data.frame")
df %>%
ggplot(aes(val, name))+
geom_point() +
annotate("text", y = 1.5, x = 1, label = "Group 1", angle = 90, size = 8) +
annotate("text", y = 3.5, x = 1, label = "Group 2", angle = 90, size = 8) +
annotate("text", y = 1.5, x = 1.2, label = "}", size = 24) +
annotate("text", y = 3.5, x = 1.2, label = "}", size = 24)
或者可能是这样的:
library(tidyverse)
library(ggforce)
df <- structure(list(name = structure(c("a", "b", "c", "d"), format.stata = "%9s"),
val = c(2, 4, 1.5, 3)), row.names = c(NA, -4L), class = "data.frame")
df %>%
mutate(group = ifelse(name %in% c("a", "b"), "group a + b", "group c + d")) %>%
ggplot(aes(val, name))+
geom_point() +
geom_mark_ellipse(aes(fill = group,
color = group))
推荐阅读
- python - 高斯噪声没有覆盖主图像-Python
- excel - 当消息框显示在顶部时,如何让用户在 Excel 工作表上工作?
- graphql - 如果定义了片段,如何测试 GraphQL 查询?
- kubernetes - 通过代理 ssh 到另一个虚拟机时如何访问 kubernetes 集群中的服务?
- visual-studio-2017 - 如何在项目属性中启用包控件
- mysql - 分组连接不同的行
- qt - QML DelegateModel:从委托访问 DelegateModel
- oracle - 如何恢复对 Oracle 视图的所有调用
- java - Java“new Type[]{...}”数组字面量初始化是什么类型的语法?
- python - 如何修复日志中的负值?