我在ggplot2
情节中有以下功能。该函数的一个特性是str_wrap
函数调用来处理我拥有的很长的标签。
PlotResponseRate <- function(EntryData)
{
PlotData <- as.data.frame(apply(X = EntryData, MARGIN = 2,
function(x) round(length(which(!is.na(x)))/length(x)*100)))
colnames(PlotData) <- "TheData"
PlotData$TheLabel <- factor(str_wrap(colnames(EntryData), width = 30),
levels = unique(str_wrap(colnames(EntryData), width = 30)))
Graphe <- ggplot(data = PlotData, aes(x = TheLabel, y = TheData)) +
geom_bar(stat = "identity", fill = "red", width = 0.8) +
coord_flip() +
labs(title = "Response rate")
}
它在普通&#34;普通&#34;环境,我想与plotly
一起使用它。因此,我添加以下代码行:
PlotData$TheLabel <- gsub(pattern = "\n", replacement = "\n<br>", PlotData$TheLabel)
看起来似乎有效但仍有问题:情节左侧的空间太宽(我不确定,但看起来它与长标签的空间相同)。 / p>
如何解决这种问题?
这是一个简单的例子:
library(stringr)
library(ggplot2)
library(plotly)
a <- c(1, 2, 2, 2, NA, 1, 2, 2, 1)
b <- c(2, 1, 2, NA, 2, NA, 1, NA, 1)
df <- data.frame(a, b)
colnames(df) <- c("This Is A Long Answer To A Long Question Label For The First Question",
"This Is A Long Answer To A Long Question Label For The Second Question")
TheGgplot2Plot <- PlotResponseRate(df)
ThePlotlyPlot <- ggplotly(TheGgplot2Plot)
print(ThePlotlyPlot)
答案 0 :(得分:2)
您可以使用plotly_build()
调整边距。
此通用函数创建发送到plotly.js的列表对象 渲染。使用此函数可用于覆盖默认值 由ggplotly / plot_ly提供或用于调试渲染错误。
使用plotly_build
生成列表对象:
ThePlotlyPlot <- plotly_build(TheGgplot2Plot)
查看结构:
str(ThePlotlyPlot)
..$ layout :List of 13
.. ..$ margin :List of 4
.. .. ..$ t: num 57.7
.. .. ..$ r: num 7.31
.. .. ..$ b: num 54.1
.. .. ..$ l: num 481
调整边距:
ThePlotlyPlot$x$layout$margin$l <- 100