【问题标题】:create plot in ggplot for each unique value in a row in r在 ggplot 中为 r 中一行中的每个唯一值创建图
【发布时间】:2020-12-16 23:06:11
【问题描述】:

我有一个这样的数据框:

library(tidyverse)

my_data <- tibble(name = c("Justin", "Janet", "Marisa"),
                  x = c(100, 50, 75),
                  y = c(2, 3, 6))

每个名字都是独一无二的,我想为每个人制作一个条形图,而不必逐行做。我还想将每个情节保存为一个独特的对象,因为我将使用官员包将其输入到电源点中。最后,名称不会始终相同,但每个名称​​将始终是唯一的。

例如,我想要一张给珍妮特的情节,一张给贾斯汀的情节,一张给玛丽莎的情节。我不希望它们被刻面,而是作为它们自己的对象。

有什么想法吗?

【问题讨论】:

    标签: r loops ggplot2 iteration purrr


    【解决方案1】:

    我们可以先获取长格式的数据,然后为每个name 创建绘图。

    library(tidyverse)
    long_data <- my_data %>% tidyr::pivot_longer(cols = -name, names_to = 'col')
    
    plots_list <- map(unique(my_data$name), ~long_data %>%
                       filter(name == .x) %>%
                       ggplot() + aes(name, value, fill = col) + 
                       geom_bar(stat = 'identity', position = 'dodge') + 
                       scale_fill_manual(values = c('red', 'blue')) + 
                       ggtitle(paste0('Plot for ', .x)))
    

    这将返回可以通过plots_list[[1]]plots_list[[2]] 等访问各个地块的地块列表。

    plots_list[[1]]
    

    【讨论】:

    • 对不起,我应该更清楚——我想要 3 个地块。一份给珍妮特,一份给公正,一份给玛丽莎
    • 那么每个条形图都一样吗?或者你想要多面?
    • 不是方面——每个人的相同条形图,理想情况下每个人都作为自己的对象
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-21
    • 1970-01-01
    • 2014-09-30
    相关资源
    最近更新 更多