我将renderPlotly
用于闪亮的ggplot图。当我运行该应用程序时,未显示任何错误,但也未绘制任何图。我的代码有问题吗?
这是我的数据集的一个例子
year region mean_price
<int> <fct> <dbl>
1 2007 Central 360769.
2 2007 East 255519.
3 2007 North 218453.
4 2007 North_East 263780.
5 2007 West 233401.
6 2008 Central 429607.
这是我的代码
library("shiny")
library("shinythemes")
library('plotly')
ui <-fluidPage(
theme=shinytheme("superhero"),
titlePanel("Average Resale Prices "),
sidebarLayout(
sidebarPanel(
selectInput("year","Year", choices = c("All","2007","2008",
"2009","2010","2011",
"2012","2013","2014",
"2015","2016","2017"), selected="All"),
selectInput("region",'Region',choices=c("All",'North','Central','North-East','West','East'),selected="All"),
selectInput("type","Flat-Type",choices = c("All","3 ROOM",'4 ROOM',"5 ROOM"),selected = "All"),width = 2
),
mainPanel(
tabsetPanel(
tabPanel("Summary", plotOutput(outputId = "lineChart")),
tabPanel("Breakdown", plotOutput(outputId = "lineChart1")),
type="tab"
)
)
)
)
# Define server logic required to draw a line graph ----
server <- function(input, output, session){
#df1<-reactive({
#if(input$type =="All"){
# plotdata1%>%
#dplyr::filter(flat_type %in% c("3 ROOM","4 ROOM","5 ROOM"))
# }
# else{
# plotdata1%>%
# dplyr::filter(flat_type %in% input$type)
# }
# })
plotdata1<-data1 %>%
group_by(year, region) %>%
summarize(mean_price=mean(resale_price))
options(scipen = 100000)
output$lineChart <- renderPlotly({
ggplot(data=plotdata1,aes(x=year,y=mean_price))+
geom_line(stat = 'identity',aes(colour=region,group=region))+
geom_point()+
xlim(c(2006,2018))+
ylab("Average Price")+
xlab('Year')
})
}
# Create Shiny object
shinyApp(ui = ui, server = server)
答案 0 :(得分:1)
如上所述
如果您打算使用ggplotly
来绘制图形,则需要使用plotly
。这也意味着您需要在plotlyOutput
中使用ui
。
另外,请确保已安装所有要使用的库。即使未安装shinythemes
,我似乎也没有收到错误消息...虽然不太可能。
以下代码为我运行,生成一个plotly
图。
library("shiny")
library("shinythemes")
library('plotly')
library("dplyr")
year <- c(2007,2007,2007,2007,2007,2008)
region <- c("central", "East", "North", "North_East", "West", "Central")
resale_price <- c(360769, 255519, 218453, 263780, 233401, 429607)
data1 <- data.frame(year,region,resale_price)
ui <-fluidPage(
theme=shinytheme("superhero"),
titlePanel("Average Resale Prices "),
sidebarLayout(
sidebarPanel(
selectInput("year","Year", choices = c("All","2007","2008",
"2009","2010","2011",
"2012","2013","2014",
"2015","2016","2017"), selected="All"),
selectInput("region",'Region',choices=c("All",'North','Central','North-East','West','East'),selected="All"),
selectInput("type","Flat-Type",choices = c("All","3 ROOM",'4 ROOM',"5 ROOM"),selected = "All"),width = 2
),
mainPanel(
tabsetPanel(
tabPanel("Summary", plotlyOutput("lineChart")),
type="tab"
))
)
)
# Define server logic required to draw a line graph ----
server <- function(input, output, session){
plotdata1<-data1 %>%
group_by(year, region) %>%
summarize(mean_price=mean(resale_price))
options(scipen = 100000)
output$lineChart <- renderPlotly({
p <- ggplot(data=plotdata1,aes(x=year,y=mean_price))+
geom_line(stat = 'identity',aes(colour=region,group=region))+
geom_point()+
xlim(c(2006,2018))+
ylab("Average Price")+
xlab('Year')
p <- ggplotly(p)
p
})
}
# Create Shiny object
shinyApp(ui = ui, server = server)
输出