我正在开发一个通用绘图功能。 我想用一大块文本来注释这个图(
info
)。
然而,由于我的图可能有 1 个或多个方面行/列,
按照建议使用 labs(tag=info)
、geom_text
或 annotate
这里 或
这里
获得合理的间距是一个很大的痛苦。
问题是:ggplot 已经可以计算合理的间距 --- 对于图例。所以,我想劫持图例来显示我的
info
。如果我有任何现有的指南(例如颜色),我可以添加连接 info
,如下所示。然而,这只有在情节中使用“色彩”美学时才有效。我想要一种可靠的方式来添加图例并强制显示它,也许具有虚拟的美感。
library('ggplot2')
add.info = function(g,info,guide='colour'){
label = sprintf('%s\n\n%s',info,g$label[[guide]])
args = setNames(list(label),guide)
g = g + do.call(labs,args)
}
X = data.frame(x=1,y=1,z=1)
g = ggplot(X,aes(x=x,y=y,color=z)) +
geom_point()
g = add.info(g,'hello world',guide='colour')
print(g)
也许您正在寻找
guide_custom
,它在ggplot2 3.5.0
中介绍过:
library("ggplot2")
X <- data.frame(x = 1, y = 1, z = 1)
g <- ggplot(X, aes(x = x, y = y)) +
geom_point()
g +
guides(
custom = guide_custom(
grid::textGrob(label = "hello world"),
title = "Info"
)
)