【问题标题】:ggplot accessing data labels rather than data valuesggplot 访问数据标签而不是数据值
【发布时间】:2021-09-13 17:34:27
【问题描述】:

我已将一些 SPSS 数据导入 R,数据已标记,我想绘制标签名称,而不是值。我已经尝试了以下方法,但它会打印值

library(labelled)
library(tidyverse)

cols <- c("White", "Red", "Black", "Green", "Brown", "Pink", "Orange")
letters <- c("D", "E", "F", "G", "H", "I", "J")

# add labels to the color values
tmp <- diamonds %>% 
 mutate(color = as.character(color)) %>%
 set_value_labels(color = setNames(letters, cols)) 

ggplot(tmp) + geom_bar(aes(x=print_labels(color)))

图表仍然使用颜色值作为 y 轴,而不是标签。我们如何绘制数据框标签?

【问题讨论】:

    标签: r spss r-haven r-labelled


    【解决方案1】:

    基于colsletters,我将为这些创建一个数据框,然后(通过dplyr::inner_join)与tmp 合并以创建一个新列,该列沿x 轴具有您想要的名称.

    library(ggplot2)
    library(dplyr)
    library(tibble)
    
    #Create a dataframe key to get the color names for each category and make a new column with the names.
    col_key <- attributes(tmp$color)$labels %>%
      as.data.frame() %>%
      dplyr::rename(cols = 1) %>%
      tibble::rownames_to_column("color")
    
    tmp <- dplyr::inner_join(tmp,
                             col_key, by = "color")
    
    ggplot(tmp) +
      geom_bar(aes(x = cols))
    

    【讨论】:

    • 我的问题是我使用的是带有内置标签和值的 SPSS 数据文件
    • 当它进入 R 后,为什么不对其进行操作呢?您可以设置一个工作流程,以了解您希望图形在 R 中的外观,当您将更新的文件从 SPSS 导入到 R 时,该工作流程可以无缝工作。
    • 我可能不得不这样做,我只是认为必须有一个更直接的方法。我不知道为什么你有标签,而你似乎无法访问它们
    • 我能够绘制它们的原因是我没有使用haven 标签。我刚刚用关键数据(即列和字母)做了一个inner_join,然后创建了一个新列,然后用它来绘制。
    • 我刚刚添加了一个解决方法,使用相同的方法,但从避风港标签中提取名称。这样,当您从 SPSS 中读取数据时,您可以轻松获取键和颜色名称。
    【解决方案2】:
    library(haven)
    
    cols <- c("White", "Red", "Black", "Green", "Brown", "Pink", "Orange")
    letters <- c("D", "E", "F", "G", "H", "I", "J")
    
    tmp <- diamonds %>% 
      mutate(color = as.character(color)) %>%
      set_value_labels(color = setNames(letters, cols)) 
    
    ggplot(tmp) + geom_bar(aes(x=as_factor(color)))
    

    使用 Haven 库,我们可以使用 as_factor(x) 命令,将标签转换为因子

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-07
      • 1970-01-01
      • 2019-05-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多