1
我有以下功能ggplot2
情節。該函數的一個功能是調用str_wrap
函數來處理我擁有的非常長的標籤。R - 劇情處理長標籤
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")
}
它工作正常,在「普通」 R環境在,我想與plotly
使用它。因此,我添加以下代碼行:
PlotData$TheLabel <- gsub(pattern = "\n", replacement = "\n<br>", PlotData$TheLabel)
這似乎工作,但還有一個問題:在圖中左側的空間太寬(我不知道,但它看起來是與長標籤相同的空間)。
如何解決此問題?
下面是一個簡單的例子:
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)
謝謝,它的工作原理中的R,但是我有光澤'輸出$ TheResponseRate <錯誤 - renderPlotly({ MyPlot < - PlotResponseRate(EntryData = DF) MyPlot < - plotly_build(MyPlot) MyPlot $ X $佈局$餘量$ l < - 180 })' – Kumpelka
消息是「Error in UseMethod:no ggplotly'方法適用於類」c('double','numeric')「的對象。 – Kumpelka