Я знаю, что вопрос был задан здесь: Есть ли способ увеличить высоту полосы strip.text в фасете?
Я хочу уменьшить высоту полосы strip.text без изменения размера текста. В данном случае всегда остается пространство между текстом и стенками полосы.
Вот что я пробовал до сих пор,
library(gcookbook) # For the data set
library(ggplot2)
ggplot(cabbage_exp, aes(x=Cultivar, y=Weight)) + geom_bar(stat="identity") +
facet_grid(.~ Date) +
theme(strip.text = element_text(face="bold", size=9,lineheight=5.0),
strip.background = element_rect(fill="lightblue", colour="black",
size=1))
В моем случае кажется, что lineheight
ни на что не влияет, даже если его изменить на 5
. Почему?
Как уменьшить размер полоски, но сохранить размер текста?
редактировать после ответа @Sandy Muspratt
мы можем уменьшить размер полосы, если есть только одна строка facets
.
g = ggplotGrob(p)
g$heights[c(3)] = unit(.4, "cm") # Set the height
grid.newpage()
grid.draw(g)
Однако в моих реальных данных у меня много строк графика, как показано ниже, и когда я изменил элементы g $ heights, ничего не произошло!
p = ggplot(cabbage_exp, aes(x=Cultivar, y=Weight)) + geom_bar(stat="identity") +
facet_wrap(~ Date,ncol = 1) +
theme(strip.text = element_text(face="bold", size=9),
strip.background = element_rect(fill="lightblue", colour="black",size=1))
g = ggplotGrob(p)
g$heights
# [1] 5.5pt 0cm 0.66882800608828cm #1null 0cm 0.193302891933029cm
# [7] 0.66882800608828cm 1null 0cm #0.193302891933029cm 0.66882800608828cm 1null
# [13] 0.456194824961948cm 0cm 1grobheight 5.5pt
затем я попытался изменить 1,7 and 11
элементов
g$heights[c(3,7,11)] = unit(.4, "cm") # Set the height
grid.newpage()
grid.draw(g)
Размер метки фасета не изменился.
> g$heights
[1] 5.5pt 1grobheight
[3] sum(0.2cm, sum(0.15cm, 0.8128cm, 0cm, 0.15cm), 0.2cm)+0.2cm 0.2
[5] 1null 0cm
[7] 0.193302891933029cm 0.2
[9] 1null 0cm
[11] 0.193302891933029cm 0.2
[13] 1null 0cm
[15] 0.193302891933029cm 0.2
[17] 1null 0.456194824961948cm
[19] 0cm 1grobheight
[21] 5.5pt
facet_wrap
, это пустое пространство становится очень важным. если бы я мог контролировать его размер, площадь участка увеличивалась бы для каждого окна. поэтому! - person Alexander   schedule 22.04.2016"\n"
в начало и конец каждой строкиcabbage_exp$Date <- paste0("\n", cabbage_exp$Date, "\n")
- person inscaven   schedule 22.04.2016