【发布时间】:2018-03-07 12:18:50
【问题描述】:
当我在 ggplotly() 中为 Shiny 应用程序执行 facet_grid 时,具有大量分面组,情节混乱。但是它在 Shiny 之外可以正常工作。
我该如何解决这个问题?
我怀疑它与 Y 比例有关,但我找不到解决方案。
这是一个基于diamonds example from plotly 的可重现示例。
闪亮与非闪亮输出的比较:Comparison of facet_grid outside and within Shiny
代码
外面闪亮:
library(ggplot2)
data(diamonds, package = "ggplot2")
# new faceting group
diamonds$rdmGroup <- as.factor(sample(LETTERS, dim(diamonds)[1], replace=TRUE))
# subset of diamonds
diamonds <- diamonds[sample(nrow(diamonds), 1000),]
ggplot(diamonds , aes_string(x = diamonds$x, y = diamonds$y, color = diamonds$x)) +
geom_point() + facet_grid(rdmGroup~.) +
guides(color=FALSE) +
labs(x = "X", y="Y")
Shiny App 中的相同代码:
library(shiny)
library(plotly)
library(ggplot2)
data(diamonds, package = "ggplot2")
# new faceting group
diamonds$rdmGroup <- as.factor(sample(LETTERS, dim(diamonds)[1], replace=TRUE))
# subset of diamonds
diamonds <- diamonds[sample(nrow(diamonds), 1000),]
ui <- fluidPage(
headerPanel("Diamonds Explorer"),
sidebarPanel(
sliderInput('plotHeight', 'Height of plot (in pixels)',
min = 100, max = 2000, value = 1000)
),
mainPanel(
plotlyOutput('trendPlot')
)
)
server <- function(input, output) {
output$trendPlot <- renderPlotly({
p <- ggplot(diamonds, aes_string(x = diamonds$x, y =diamonds$y, color = diamonds$x)) +
geom_point()+ facet_grid(rdmGroup~., scales = "free_y") +
labs(x = "X", y="Y")
ggplotly(p) %>%
layout(height = input$plotHeight, autosize=TRUE)
})
}
shinyApp(ui, server)
PS:我故意使用 aes_string() 而不是 aes(),因为我在实际应用中需要它。
【问题讨论】:
-
在运行您的示例时收到很多警告。您是否尝试过安装 ggplot2 的最新 github 版本? "我们建议您使用带有
ggplotly()的开发版ggplot2 安装它:devtools::install_github('hadley/ggplot2')" -
我更新了 ggplot2 并且警告消失了。谢谢你的建议。但它并不能解决 pb。
标签: r shiny facet-grid ggplotly