我试图从ggplot图例对象中提取标签文本,例如:对于该图:
library(ggplot2)
(p <- ggplot(mtcars, aes(x=mpg, y=disp, color=as.character(cyl))) + geom_point())
我可以通过以下方式提取图例
library(ggpubr)
legend <- ggpubr::get_legend(p)
接下来,我想得到图例对象中包含的实际字符串值,即对于这种情况**“4”,“6”,“8”**。如何从图例对象中检索这些值?
- 注意:我没有原始数据,只有图例对象。*
1条答案
按热度按时间wixjitnu1#
首先设置图例:
根据
legendp$grobs[[1]]
,我们知道标签可能存储在grob 9到11中:然后我们可以
unlist
grobs 9到11(使用which(grepl("label", legendp$grobs[[1]]$layout$name))
动态输出目标grobs)。标签存储在一个子列表元素下,其名称以“children.guide.label”开头,以“label”结尾,因此我们可以grep
该模式来获取目标标签。另一个例子来说明它的工作原理。
创建于2023-06-09使用reprex v2.0.2