gpt4 book ai didi

r - 在 ggplot2 直方图中添加与 bin 高度相同的选定观测值的标签

转载 作者:行者123 更新时间:2023-12-03 17:12:21 26 4
gpt4 key购买 nike

我想为直方图中的某些观察添加“id”注释。

到目前为止,我可以毫无问题地添加注释,但我希望注释的 'y' 位置是 bin + 1 的计数(出于审美原因)。

这是我到目前为止:

library(tidyverse)
library(ggrepel)

selected_obs <- c("S10", "S100", "S245", "S900")
set.seed(0)
values <- rnorm(1000)
plot_df <- tibble(id = paste0("S", 1:1000),
values = values) %>%
mutate(obs_labels = ifelse(id %in% selected_obs, id, NA))

ggplot(plot_df, aes(values)) +
geom_histogram(binwidth = 0.3, color = "white") +
geom_label_repel(aes(label = obs_labels, y = 100))

enter image description here

我已经看到多个关于使用 geom_text(stat = count", aes(y=..count.., label=..count..) 注释每个 bin 的计数的答案。 .

基于此,我尝试了这两种解决方法,但没有成功:
  • geom_label_repel(stat = "count", aes(label = obs_labels, y = ..count..))产量:
    “错误:geom_label_repel 需要以下缺失的美学:标签”
  • geom_label_repel(aes(label = obs_labels, y = ..count..))产生“错误:美学必须是有效的计算统计数据。有问题的美学:y = ..count ...
    您是否在错误的图层中映射了您的统计数据?”。

  • 任何人都可以在这里有所启发?

    最佳答案

    这可能是一个稍微具有误导性的可视化,因为您正在标记一个唯一的 ID,但是通过将此标签定位到计数高度,您暗示该 ID 经常被计数。无论如何。

    最直接的选择是手动计算您的 ID 所属的 bin,然后计算这个 bin,然后使用这些数据为您的标签设置 x 和 y。

    不幸的是,我必须在线使用 R 并且无法创建一个很好的 reprex,因此包括一个屏幕截图。但是代码应该是可重现的,如 it is running online

    library(tidyverse)
    library(ggrepel)

    selected_obs <- c("S10", "S100", "S245", "S900")
    set.seed(0)
    values <- rnorm(1000)

    plot_df <- tibble(id = paste0("S", 1:1000),
    values = values) %>%
    mutate(obs_labels = ifelse(id %in% selected_obs, id, NA),
    bins = as.factor( as.numeric( cut(values, 30)))) # cutting into 30 bins

    label_df<- plot_df %>% filter(id %in% selected_obs) %>% left_join(plot_df, by = 'bins') %>%
    group_by(values = values.x, obs_labels = obs_labels.x) %>% count

    ggplot(plot_df, aes(values)) +
    geom_histogram(color = "white") + # removed your bin argument, as to default to 30
    geom_label(data = label_df, aes(label = obs_labels, y = n))

    enter image description here

    标签位置不是很完美 - 这是因为我选择切成 30 个相等的 bin 并且在 cut 之间的 binning 可能略有不同。和 histogram .这可能需要进行一些调整,具体取决于垃圾箱的大小,以及是否包含上/下边距。

    附言分成相等的箱子的功劳归于 this answer by user pedrosaurio

    关于r - 在 ggplot2 直方图中添加与 bin 高度相同的选定观测值的标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60656775/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com