我正在尝试使用ggplotly()创建水平条形图。因为标签很长,所以我插入了换行符<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()
})

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

发布于 2020-01-10 21:56:05
与@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))

有趣的是,传递给l的值似乎并不重要:
ggploty(p) %>%
layout(margin = list(l = 10))

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

发布于 2020-01-07 22:31:00
您可以在theme中使用plot.margin更改of图的边距
ggplotly({
ggplot(df, aes(a, b)) +
geom_col() +
coord_flip() + theme(plot.margin = margin(0,0,0,-4, "cm"))
})

https://stackoverflow.com/questions/59630158
复制相似问题