ggplot2图例宽度和图例字符串大小

时间:2016-04-15 21:24:56

标签: r ggplot2 legend legend-properties

我有2个完全相同的情节,除了填充条纹的颜色在每个情节上都不同。由于不同图上的图例由于其上的名称大小而具有不同的宽度,因此图和图例之间的比例在每个图上变得不同。我需要让两者看起来都一样。

这是一个例子:

library(ggplot2)

x = c(rep("a",20),rep("b",10))
y = c(x = c(rep("BIGTEXT",20),rep("EVENBIGGERTEXT",10)))
df = data.frame(x,y)

p1 = ggplot(df,aes(x,fill=x)) + geom_bar()
p2 = ggplot(df,aes(y,fill=y)) + geom_bar()

p1
p2

2 个答案:

答案 0 :(得分:3)

您可以将gtable宽度设置为公共值

library(gtable)
library(grid)
gl <- lapply(list(p1, p2), ggplotGrob)

gwidth <- do.call(unit.pmax, lapply(gl, "[[", "widths"))
gl <- lapply(gl, "[[<-", "widths", value = gwidth)
gridExtra::grid.arrange(grobs=gl)

或者,您可以set the panel size使用固定值。

答案 1 :(得分:0)

跟随@ baptiste的评论:可爱,但是,可以做到。但不保证这将在未来版本中有效。该解决方案取自here,但该解决方案也需要更新。

script
  :uglify-js
    (function doSomething () { … })();