R - gridExtra - ggplot() 的某些层不缩放
R - gridExtra - some layer of ggplot() does not scale
我有一堆 ggplot()
两层:一个 geom_boxplot
和一个 geom_points
。
当我使用 gridExtra
将它们插入网格时,geom_boxplot
会缩放,但 geom_point
不会缩放,这会导致一些丑陋的东西(参见下图)。
请问我该如何解决这个问题?
可重现代码:
library(ggplot2)
library(gridExtra)
datablock <- data.frame(date = rep(1:10, 3)
, value = rnorm(30, 3,2)
, name = c(rep("one",10), rep("two",10), rep("three",10)))
currentValues <- data.frame(date = rep(1,3)
, value = c(3, 2.3, 3.5)
, name = c("one","two", "three"))
boxplotFg <-
ggplot(datablock, aes(x = name, y = value)) + geom_boxplot(outlier.shape=NA) +
geom_point(data=currentValues, aes(x=name, y=value, color = value), size = 8)
grid.arrange(boxplotFg,boxplotFg, boxplotFg, boxplotFg,boxplotFg, boxplotFg, ncol = 3)
输出:
我当然可以将 geom_point
的大小减小到 4 或 5...但是我觉得改变绝对大小不是正确的方法,因为它只会解决问题一般来说。
也许最简单的解决方案是根据网格列数缩放点大小。
nc = 3
boxplotFg <-
ggplot(datablock, aes(x = name, y = value))
geom_boxplot(outlier.shape=NA) +
geom_point(data=currentValues, aes(x=name, y=value, color = value),
size = 8/nc)
grid.arrange(boxplotFg, boxplotFg, boxplotFg, boxplotFg,boxplotFg, boxplotFg,
ncol = nc)
相同的代码,但 nc=2
产生
我有一堆 ggplot()
两层:一个 geom_boxplot
和一个 geom_points
。
当我使用 gridExtra
将它们插入网格时,geom_boxplot
会缩放,但 geom_point
不会缩放,这会导致一些丑陋的东西(参见下图)。
请问我该如何解决这个问题?
可重现代码:
library(ggplot2)
library(gridExtra)
datablock <- data.frame(date = rep(1:10, 3)
, value = rnorm(30, 3,2)
, name = c(rep("one",10), rep("two",10), rep("three",10)))
currentValues <- data.frame(date = rep(1,3)
, value = c(3, 2.3, 3.5)
, name = c("one","two", "three"))
boxplotFg <-
ggplot(datablock, aes(x = name, y = value)) + geom_boxplot(outlier.shape=NA) +
geom_point(data=currentValues, aes(x=name, y=value, color = value), size = 8)
grid.arrange(boxplotFg,boxplotFg, boxplotFg, boxplotFg,boxplotFg, boxplotFg, ncol = 3)
输出:
我当然可以将 geom_point
的大小减小到 4 或 5...但是我觉得改变绝对大小不是正确的方法,因为它只会解决问题一般来说。
也许最简单的解决方案是根据网格列数缩放点大小。
nc = 3
boxplotFg <-
ggplot(datablock, aes(x = name, y = value))
geom_boxplot(outlier.shape=NA) +
geom_point(data=currentValues, aes(x=name, y=value, color = value),
size = 8/nc)
grid.arrange(boxplotFg, boxplotFg, boxplotFg, boxplotFg,boxplotFg, boxplotFg,
ncol = nc)
相同的代码,但 nc=2
产生