假设我有一个包含两个变量的数据框。我们将调用这些变量x和var_count。我们将说这var_count只是整数并且本质上是分类的(即所有值都是 1、2、3、4 或 5)。我想x在 y 轴上绘制变量,在 x 轴上绘制变量var_count。然后我想用给定geom_text的最高x值标记var_count。因此,对于 avar_count为 1 的所有元素,我只想标记具有最高x.
我有大部分编写的代码,但没有检测这种情况的条件,并说“是的,这点需要标记”。我怎么写这最后一个条件?
所以这里有一些带有一些示例数据的示例代码。
library(tidyverse)
library(ggplot)
sample_data <- tibble(var_count = c(1, 1, 1, 1, 2, 2, 2, 5),
x = c(0.2, 1.1, 0.7, 0.5, 2.4, 0.8, 0.9, 1.3))
sample_data %>%
ggplot(aes(x = var_count, y = x)) +
geom_point() +
geom_text(aes(label =ifelse(
FALSE,
"my label", ""
)), hjust = 1.2)
Run Code Online (Sandbox Code Playgroud)
我想将 ifelse 的条件从 FALSE 替换为工作,以便标记下图中圈出的点:

几乎,我想标记给定 var_count 的最高 x 值。
在数据帧本身内部执行此操作是最简单的。在执行ifelse()or 的位置创建一个新列,如果条件为 ,则为case_when()该列提供一个空字符串。然后将其用作标签文本。""FALSE
library(tidyverse)
library(ggrepel)
my_iris <-
iris %>%
group_by(Species) %>%
mutate(my_label = ifelse(Sepal.Width == max(Sepal.Width),
paste(Sepal.Width, "cm"), "")) %>%
ungroup()
ggplot(my_iris, aes(x = Petal.Length, y = Sepal.Width, colour = Species)) +
geom_point() +
geom_text_repel(aes(label = my_label), box.padding = 2)
Run Code Online (Sandbox Code Playgroud)

由reprex 包(v0.2.1)于 2019 年 11 月 22 日创建
| 归档时间: |
|
| 查看次数: |
310 次 |
| 最近记录: |