Обернуть метку оси при использовании ggplotly () - PullRequest
0 голосов
/ 07 января 2020

Я пытаюсь создать горизонтальную гистограмму, используя ggplotly(). Поскольку надписи довольно длинные, я вставил HTML разрывы строк <br>. При выводе данных с использованием ggplotly() метка действительно обернута, но слева от метки есть большое поле, что делает обертку бесполезной. Есть ли способ исправить это, кроме использования plot_ly()?

library(ggplot2)
library(plotly)

df <- data.frame(a = "A very long label<br>that needs<br>to be wrapped", b = 10)

ggplotly({
  ggplot(df, aes(a, b)) +
  geom_col() +
  coord_flip()
})

enter image description here

plot_ly(df, y = ~a, x = ~b, type = "bar", orientation = "h")

enter image description here

Ответы [ 2 ]

1 голос
/ 07 января 2020

Вы можете изменить поля ggplot с помощью plot.margin в theme:

ggplotly({
     ggplot(df, aes(a, b)) +
         geom_col() +
         coord_flip() + theme(plot.margin = margin(0,0,0,-4, "cm"))
 })

enter image description here

0 голосов
/ 10 января 2020

Аналогично ответу @ asafpr, настройка левого поля с помощью plotly::layout() выполняет работу:

library(ggplot2)
library(plotly)

df <- data.frame(a = "A very long label<br>that needs<br>to be wrapped", b = 10)

p <- ggplot(df, aes(a, b)) +
  geom_col() +
  coord_flip()

ggploty(p) %>%
  layout(margin = list(l = 10))

enter image description here

Интересно, что значение передано на l не имеет значения:

ggploty(p) %>%
  layout(margin = list(l = 10))

enter image description here

ggploty(p) %>%
  layout(margin = list(l = 1000))

enter image description here

...