你好,我正在尝试创建一个闪亮的应用程序,在这个应用程序中,我想在一个图形上显示多少订单(在24小时内交付,如果不是,则以TAT)。
这就是我在server.R中携带的原始数据,在数据传递和操作之后的表。
WareHouse Order Date In TAT Out TAT
W-1 2019-02-14 431 5
W-1 2019-02-15 533 10
W-1 2019-02-16 234 64
W-1 2019-02-17 456 12
W-2 2019-02-14 123 11
W-2 2019-02-15 787 56
W-2 2019-02-16 234 89
W-2 2019-02-17 221 23
W-3 2019-02-14 111 12
W-3 2019-02-15 789 56
W-3 2019-02-16 345 98
W-3 2019-02-17 897 45现在,我想在我的shinyapp的首页上画一个图表,在那里我可以显示在不同的日期,有多少订单在TAT中,有多少订单来自不同的仓库。
以下是我目前所取得的成就。
UI.R
library(shiny)
library(DT)
library(gtools)
shinyUI(
fluidPage(
navbarPage(
title = 'Dashboard',
tabPanel('Overview'),
tabsetPanel(
tabPanel('In/Out TAT Details',
fluidRow(
# plotlyOutput("overview"),
DT::dataTableOutput("view_fwd"),width = 6
) )
),
tabPanel('B2C Details'
))))在Server.R中,我正在读取文件并计算订单的TAT &创建上面所示的表a
library(shiny)
library(ggplot2)
shinyServer(
function(input, output) {
overview <- reactive({
library(DT)
library(RPostgreSQL)
library(markdown)
library(dplyr)
library(reshape2)
library(ggplot2)
library(plotly)
m <- read.csv("/data/xia2.csv", header=TRUE, sep=",")
x <- m[,c("Order.ID","Warehouse","order.time","deliver.Time")]
x$deliver.Time <- as.POSIXct(x$deliver.Time , format='%m-%d-%Y %H:%M')
x$order.time <- (as.POSIXct(x$order.time, format='%m-%d-%Y %H:%M'))
# as.character
x$diff <- (difftime(x$deliver.Time,x$order.time,units="days"))
x$TAT <- ifelse(x$diff > 1, paste("Out TAT"), paste("In TAT"))
x$date <- as.Date(x$deliver.Time)
table <- dcast(x, Warehouse + date ~ TAT,value.var = "Order.ID", fun.aggregate = length, margins = TRUE)
table <- table[which(table$date !="(all)"),]
})
output$view_fwd <- DT::renderDataTable(DT::datatable({
view_fwd <- overview()
},class = 'cell-border stripe',options = list(pageLength = 50),
rownames= FALSE))
})到目前为止,我只是显示我在server.R中得到的“表”数据框架,而不是这样,我想要创建一个可能出现的图或图。
谢谢
发布于 2019-02-21 12:55:20
当您创建一个闪亮的对象时,您必须将两件事情看作是单独的:ui对象和server对象(事情后来变得更加复杂,但以这种方式开始比较简单)
每当您想要以闪亮的形式显示一个情节时,首先必须使用renderPlot在server部分中使用输出对象(这将创建将被呈现的对象)来创建对象。第二,使用ui部分中的一个ui在闪亮的应用程序中显示对象。
一个简短的例子:
在server部分:我选择了任何变量x和y,只是为了给出一个大致的想法。
output$plot <- renderPlot{ggplot(dat,aes(x=x,y=y)) + geom_line()}在ux部分(在要放置情节的部分中):由于个人喜好,我选择了1400x600分辨率。
plotOutput("plot", width = "1400px", height = "600px")这应该使你想要的情节出现在你选择的地方。
https://stackoverflow.com/questions/54807345
复制相似问题