如何在R中绘制姓名与颜色组合的网格标记图?
用R实现姓名-颜色宾果卡式网格图
1. 准备工作:加载依赖包
首先确保安装并加载tidyverse包,它包含了数据处理和绘图所需的核心工具:
# 首次使用时安装包 install.packages("tidyverse") # 加载包 library(tidyverse)
2. 创建/导入数据集
把你的示例数据转换成R数据框,或者直接导入现有数据文件:
# 示例数据集 df <- tibble( X1 = c("Jon", "Brandon", "Jared", "Aaron", "Layton", "Colby", "Brandon", "Aaron", "Zach", "Sean", "Jared", "Jon"), X2 = c("Red", "Blue", "Yellow", "Pink", "Black", "White", "Yellow", "Black", "Red", "Blue", "Pink", "White") )
3. 生成网格标记数据
先提取唯一的姓名和颜色,再标记所有可能组合中实际存在的项:
# 获取唯一姓名和颜色(保留原数据出现顺序) unique_names <- unique(df$X1) unique_colors <- unique(df$X2) # 生成全组合数据,并标记是否存在 grid_data <- expand_grid(X1 = unique_names, X2 = unique_colors) %>% mutate(exists = if_else(str_c(X1, X2) %in% str_c(df$X1, df$X2), "X", ""))
4. 绘制可视化网格图
用ggplot2绘制宾果卡样式的网格,调整样式匹配需求:
ggplot(grid_data, aes(x = X2, y = fct_rev(X1))) + # 绘制带边框的空白网格 geom_tile(color = "black", fill = "white") + # 在存在的位置标记"X" geom_text(aes(label = exists), size = 5) + # 设置坐标轴标签 labs(x = "颜色", y = "姓名") + # 优化主题样式 theme_minimal() + theme( panel.grid = element_blank(), # 移除默认网格线 axis.text.x = element_text(angle = 45, hjust = 1), # 倾斜颜色标签避免重叠 axis.title = element_text(size = 12, face = "bold") )
备选:输出纯文本格式网格
如果需要和示例完全一致的文本表格,可转换为宽格式后打印:
wide_df <- df %>% mutate(value = "X") %>% pivot_wider(names_from = X2, values_from = value, values_fill = "") # 打印纯文本表格 print(wide_df, row.names = FALSE)
内容的提问来源于stack exchange,提问作者OddWaller
相关产品推荐
相关产品推荐

