Есть ли способ увеличить высоту полосы strip.text в грани? - программирование
Подтвердить что ты не робот

Есть ли способ увеличить высоту полосы strip.text в грани?

Я хотел бы, чтобы серая полоса в верхней части была более широкой, как и у, края ее немного дальше от верхней и нижней части букв (strip.text - A, B, C и т.д.). Я бы подумал, что линейка будет действовать как дополнение, но это не так.

ggplot(diamonds, aes(carat, price, fill = ..density..)) +
  xlim(0, 2) + stat_binhex(na.rm = TRUE)+
  facet_wrap(~ color) +
  theme(strip.text = element_text(lineheight=20)) 
4b9b3361

Ответ 1

Сначала измените уровни так, чтобы они включали linebreak:

levels(diamonds$color) <- paste0(" \n", levels(diamonds$color) , "\n ")

Затем при необходимости отрегулируйте. например:

P <- ggplot(diamonds, aes(carat, price, fill = ..density..)) +
      xlim(0, 2) + stat_binhex(na.rm = TRUE)+
      facet_wrap(~ color)

P +  theme(strip.text = element_text(size=9, lineheight=0.5))

lineheight=0.5

P +  theme(strip.text = element_text(size=9, lineheight=3.0))

lineheight=3.0

Ответ 2

С ggplot2 2.2.0 вы можете применить трюк Рикардо, не изменяя фрейм данных, используя labeller:

P <- ggplot(diamonds, aes(carat, price, fill = ..density..)) +
  xlim(0, 2) + stat_binhex(na.rm = TRUE)+
  facet_wrap(~ color, labeller = labeller(color=setNames(paste0("\n", levels(diamonds$color), "\n"), levels(diamonds$color))))

P +  theme(strip.text = element_text(size=9, lineheight=0.5))