Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ggplot2和gridExtra:减少已删除镶嵌条的绘图之间的间距_R_Ggplot2_Spacing_Gridextra - Fatal编程技术网

ggplot2和gridExtra:减少已删除镶嵌条的绘图之间的间距

ggplot2和gridExtra:减少已删除镶嵌条的绘图之间的间距,r,ggplot2,spacing,gridextra,R,Ggplot2,Spacing,Gridextra,我希望绘制一些紧密间隔的图形,如以下玩具示例所示: library(ggplot2) library(gridExtra) set.seed(314159) n <- 100 data <- data.frame(x = rnorm(n), y = rnorm(n), z = rep("dummy var", n)) p00 <- ggplot(data, aes(x)) + stat_density() + theme(plot.margin = unit(c(0,0,0,

我希望绘制一些紧密间隔的图形,如以下玩具示例所示:

library(ggplot2)
library(gridExtra)
set.seed(314159)
n <- 100
data <- data.frame(x = rnorm(n), y = rnorm(n), z = rep("dummy var", n))

p00 <- ggplot(data, aes(x)) + stat_density() + theme(plot.margin = unit(c(0,0,0,0), units = "lines" ), axis.text = element_blank(), axis.title = element_blank(), axis.ticks = element_blank()) + labs(x = NULL, y = NULL)
p01 <- ggplot(data, aes(x, y)) + geom_point() + theme(plot.margin = unit(c(0,0,0,0), units = "lines" ), axis.text = element_blank(), axis.title = element_blank(), axis.ticks = element_blank()) + labs(x = NULL, y = NULL)
p10 <- ggplot(data, aes(y, x)) + geom_point() + theme(plot.margin = unit(c(0,0,0,0), units = "lines" ), axis.text = element_blank(), axis.title = element_blank(), axis.ticks = element_blank()) + labs(x = NULL, y = NULL)
p11 <- ggplot(data, aes(y)) + stat_density() + theme(plot.margin = unit(c(0,0,0,0), units = "lines" ), axis.text = element_blank(), axis.title = element_blank(), axis.ticks = element_blank()) + labs(x = NULL, y = NULL)

grid.arrange(p00, p01, p10, p11, ncol = 2)
库(ggplot2)
图书馆(gridExtra)
种子集(314159)

n要删除与轴关联的所有元素,除了设置为
element_blank
的元素外,需要将刻度边距和刻度长度设置为零。但仍有空间用于镶嵌条。将背景和文本设置为
element\u blank
不会影响条带的高度和宽度。要删除条带,我使用操纵gtable布局的函数。然而,我认为最好在情节之间留下一些空白。我已将小绘图边距设置为0.2行

library(ggplot2)
library(gridExtra)
set.seed(314159)
n <- 100
data <- data.frame(x = rnorm(n), y = rnorm(n), z1 = rep("dummy var", n), z2 = rep("dummy var", n))

theme = theme(plot.margin = unit(c(.2,.2,.2,.2), units = "lines"), 
         axis.text = element_blank(), 
         axis.title = element_blank(), 
         axis.ticks = element_blank(), 
         axis.ticks.length = unit(0, "lines"))
labs = labs(x = NULL, y = NULL) 

p00 <- ggplot(data, aes(x)) + stat_density() + theme + labs + facet_grid(z1 ~ z2)
p01 <- ggplot(data, aes(x, y)) + geom_point() + theme + labs + facet_grid(z1 ~ z2)
p10 <- ggplot(data, aes(y, x)) + geom_point() + theme + labs + facet_grid(z1 ~ z2)
p11 <- ggplot(data, aes(y)) + stat_density() + theme + labs + facet_grid(z1 ~ z2)
库(ggplot2)
图书馆(gridExtra)
种子集(314159)

n非常感谢!它非常适合玩具示例。我注意到,当我们有:
data是的,在修改后的数据和绘图中,在两个面之间有一个内置的空间,垂直条在更一般的情况下仍然存在。请参见编辑以删除该空间。
p00 <- p00 + theme(plot.margin = unit(c(0,0.5,0.5,0), units = "lines" ), strip.background = element_blank(), strip.text = element_blank())
p01 <- p01 + theme(plot.margin = unit(c(0,0.5,0.5,0), units = "lines" ), strip.background = element_blank(), strip.text = element_blank())
p10 <- p10 + theme(plot.margin = unit(c(0,0.5,0.5,0), units = "lines" ), strip.background = element_blank(), strip.text = element_blank())
p11 <- p11 + theme(plot.margin = unit(c(0,0.5,0.5,0), units = "lines" ), strip.background = element_blank(), strip.text = element_blank())

grid.arrange(p00, p01, p10, p11, ncol = 2)
library(ggplot2)
library(gridExtra)
set.seed(314159)
n <- 100
data <- data.frame(x = rnorm(n), y = rnorm(n), z1 = rep("dummy var", n), z2 = rep("dummy var", n))

theme = theme(plot.margin = unit(c(.2,.2,.2,.2), units = "lines"), 
         axis.text = element_blank(), 
         axis.title = element_blank(), 
         axis.ticks = element_blank(), 
         axis.ticks.length = unit(0, "lines"))
labs = labs(x = NULL, y = NULL) 

p00 <- ggplot(data, aes(x)) + stat_density() + theme + labs + facet_grid(z1 ~ z2)
p01 <- ggplot(data, aes(x, y)) + geom_point() + theme + labs + facet_grid(z1 ~ z2)
p10 <- ggplot(data, aes(y, x)) + geom_point() + theme + labs + facet_grid(z1 ~ z2)
p11 <- ggplot(data, aes(y)) + stat_density() + theme + labs + facet_grid(z1 ~ z2)
# Get the four gtables (and the four plots) into a list
pList = list(p00, p01, p10, p11)
gList = lapply(pList, ggplotGrob)

# Remove the top strip from each plot
stripT <- subset(gList[[1]]$layout, grepl("strip-t", gList[[1]]$layout$name))
gList = lapply(gList, function(x) x[-stripT$t, ])

# Remove the right strip from each plot
stripR <- subset(gList[[1]]$layout, grepl("strip-r", gList[[1]]$layout$name))
gList = lapply(gList, function(x) x[, -stripR$r])

# Draw the revised plots
nCol <- floor(sqrt(length(pList)))
do.call(grid.arrange, c(gList, ncol = nCol))
library(grid)

data <- data.frame(x = rnorm(n), y = rnorm(n), z = rep("dummy var", n), u = seq(1, n) %% 2) 
p01 <- ggplot(data, aes(x, y)) + geom_point() + theme + labs + facet_grid(z ~ u)

g = ggplotGrob(p01)
stripT = subset(g$layout, grepl("strip-t", g$layout$name))
g = g[-stripT$t, ]
stripR = subset(g$layout, grepl("strip-r", g$layout$name))
g = g[, -stripR$r]

grid.draw(g) # Still got the space between the facets

g$widths  # where is the space? it's the 5.55 pt width

g$widths[[5]] = unit(0, "lines") # remove it completely
g$width
grid.draw(g)