Длинные метки facet_wrap в ggplotly / plotly перекрывают strip.background фасета - PullRequest
3 голосов
/ 09 апреля 2020

У меня есть график, подобный представленному ниже, где мне нужно отобразить заголовок графика и несколько длинных надписей. В ggplot2 это выглядит просто отлично.

Представляет:

library(ggplot2)
library(stringr)
library(plotly)

iris$Species2 <- paste(iris$Species, "... some text to make the label really long and hard to put on a facet label")
iris$Species2 <- str_wrap(iris$Species2, 20)

g <- ggplot(iris, aes(Sepal.Length, Sepal.Width, color = Species)) +
  geom_point() +
  labs(title = "This title isn't helping anyone") + 
  facet_wrap(~Species2)

g

enter image description here

Однако, преобразование в динамический c график не работает должным образом ... метки фасетов обрезаются и появляются в заголовке:

gp <- ggplotly(g)
gp

enter image description here

Существует предыдущий вопрос SO об этом , но похоже, что ОП не пытался ответить - никто не понял, что предложенный ответ не работает должным образом.

I Я не чужд plotly странному поведению, когда задействованы аспекты - см. разговор здесь на github , но я не знаю plotly достаточно хорошо, чтобы изменить объект до заставить его иметь более длинную полосу. background.

Надеясь, что кто-то может помочь мне изменить объект gp для решения.

1 Ответ

1 голос
/ 09 апреля 2020
gp <- ggplotly(g)
# move facet labels down
gp[["x"]][["layout"]][["annotations"]][[3]][["y"]] <- 0.85 
gp[["x"]][["layout"]][["annotations"]][[4]][["y"]] <- 0.85
gp[["x"]][["layout"]][["annotations"]][[5]][["y"]] <- 0.85

# extend y axis to make room to move facet box down
gp[["x"]][["layout"]][["yaxis"]][["range"]] <- c(1.88,5.5) 
# extend facet boxes down
gp[["x"]][["layout"]][["shapes"]][[2]][["y0"]] <- - 100 
gp[["x"]][["layout"]][["shapes"]][[4]][["y0"]] <- - 100 
gp[["x"]][["layout"]][["shapes"]][[6]][["y0"]] <- - 100

gp
...