如何在ggplot中创建多行垂直排列的纯文本绘图?
用ggplot创建垂直排列的纯文本绘图
完全可以实现,核心思路是给每条文本分配垂直位置,然后隐藏ggplot的所有默认可视化元素(坐标轴、网格、背景等),只保留文本内容。具体操作如下:
- 给数据集添加位置列,控制文本的垂直堆叠顺序
- 用
geom_text()绘制文本,配合主题设置隐藏多余元素
完整代码示例
library(ggplot2) # 你的原始数据集 df <- structure(list(new = c("No: 0.91", "Yes: 0.89", "All: 0.84")), row.names = c(NA, -3L), class = c("tbl_df", "tbl", "data.frame")) # 添加y轴位置列,数值越大位置越靠上 df$y_pos <- seq(nrow(df), 1) # 创建纯文本绘图 ggplot(df, aes(x = 0, y = y_pos, label = new)) + geom_text(size = 5, hjust = 0.5) + # 控制文本大小和水平居中 theme_void() + # 去掉所有默认元素 ylim(0, nrow(df) + 1) # 调整y轴范围,避免文本被裁剪
代码说明
y_pos列:生成从3到1的序列,让第一条文本(No:0.91)在最上方,最后一条(All:0.84)在最下方,实现垂直堆叠效果。theme_void():直接清空ggplot的背景、坐标轴、网格线等所有非必要元素,只保留绘制的文本。hjust=0.5:让文本在水平方向居中,也可以改成hjust=0左对齐或hjust=1右对齐。
运行这段代码后,就能得到仅包含垂直排列文本的绘图,完全匹配你的需求。
内容的提问来源于stack exchange,提问作者lola
相关产品推荐
相关产品推荐

