如果安装了gtable
版本0.2.0(ggplot2
v 2.1.0),可以使Kohske的原始解决方案(请参见评论)得以运行。
df <- expand.grid(x = factor(seq(1:5)), y = factor(seq(1:5)), KEEP.OUT.ATTRS = FALSE)
df$Count = seq(1:25)
library(ggplot2)
library(grid)
p = ggplot(data = df, aes( x = x, y = y, label = Count, size = Count)) +
geom_text() +
scale_size(range = c(2, 10))
p
grid.ls(grid.force())
grid.gedit("key-[-0-9]-1-1", label = "N")
或者,要使用一个 grob 对象进行操作:
gp = ggplotGrob(p)
grid.ls(grid.force(gp))
gp = editGrob(grid.force(gp), gPath("key-[1-9]-1-1"), grep = TRUE, global = TRUE,
label = "N")
grid.newpage()
grid.draw(gp)
另一个选项
修改图形
df <- expand.grid(x = factor(seq(1:5)), y = factor(seq(1:5)), KEEP.OUT.ATTRS = FALSE)
df$Count = seq(1:25)
library(ggplot2)
library(grid)
p = ggplot(data = df, aes( x = x, y = y, label = Count, size = Count)) +
geom_text() +
scale_size(range = c(2, 10))
p
GeomText$draw_key <- function (data, params, size) {
pointsGrob(0.5, 0.5, pch = "N",
gp = gpar(col = alpha(data$colour, data$alpha),
fontsize = data$size * .pt)) }
p
grid.gedit("^key-[-0-9]+$", label = "N")
。 - kohske