В первую очередь это может быть результатом неправильного понимания того, как panel.margin = unit(...)
работает в функции theme()
... но я не могу настроить поля в facet_wrap так, как хотелось бы. В принципе, я хочу, чтобы facet_grid выглядел так: с фасетным текстом (т.е. strip.text
) в каждом аспекте и без spcaing между каждой гранью:
(Я оставил в розовых границах, чтобы показать размеры каждой грани)
Итак, вот код до сих пор.
Чтобы настроить данные и график:
library(ggplot2)
library(grid)
p <- ggplot() +
geom_bar(data = mtcars, aes(x = cyl, y = qsec), stat = 'identity') +
facet_wrap( ~ carb, ncol = 3)
mytheme <- theme_minimal() + theme(
axis.text.x = element_blank(),
axis.text.y = element_blank(),
axis.ticks = element_blank(),
axis.title = element_blank(),
panel.margin = unit(0, "lines"),
panel.border = element_rect(colour = rgb(1.0, 0, 0, 0.5), fill=NA, size=1)
)
Стандартный график
p + mytheme
Удаление strip.text полностью
p + mytheme + theme(strip.text = element_blank())
Добавление strip.text и вставка его
p + mytheme +
theme(strip.text = element_text(size = rel(3.0), vjust = -4.0))
Повторное включение strip.text(и увеличенного относительного размера) увеличивает вертикальный край между двумя строками. Поэтому в этот момент я не знаю, как закрыть вертикальный зазор между верхним и нижним рядами.
Слишком большая отрицательная маржаp + mytheme +
theme(strip.text = element_text(size = rel(3.0), vjust = -4.0),
panel.margin = unit(c(-2, -2), "lines"))
Итак, как мне настроить таргетинг только на панель .margin между двумя строками?
Изменить: Дополнительная информация. Пространство между строками выглядит как strip.background
:
p + mytheme +
theme(strip.text = element_text(size = rel(3.0), vjust = -4.0),
panel.margin = unit(-1, "lines"),
strip.background = element_rect(fill = rgb(0, 1.0, 0, 0.2)))