Created
August 26, 2013 02:22
-
-
Save tcash21/6337619 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
.chart_container { | |
position: relative; | |
display: inline-block; | |
font-family: Arial, Helvetica, sans-serif; | |
} | |
.rChart { | |
display: inline-block; | |
margin-left: 40px; | |
} | |
.yAxis { | |
position: absolute; | |
top: 0; | |
bottom: 0; | |
width: 40px; | |
} | |
.span8 { | |
} | |
.tabbable { | |
position: absolute; | |
left: 350px; | |
} | |
.legend { | |
position: absolute; | |
top: 0; | |
right: -160px; | |
vertical-align: top; | |
} | |
.slider { | |
margin-left: 40px; | |
margin-top: 12px; | |
width: 500px; | |
} | |
#table { | |
position: absolute; | |
top: 475px; | |
bottom: 0; | |
left: -50px; | |
} | |
#plot { | |
position: absolute; | |
left: -100px; | |
} | |
.select { | |
max-width: 350px; | |
} | |
.textarea { | |
max-width: 205px; | |
} | |
.well { | |
max-width: 255px; | |
} | |
#power { | |
} | |
.xchart { | |
position: absolute; | |
left: 470px; | |
bottom: 600px; | |
} | |
#text { | |
position: absolute; | |
width: 275px; | |
left: -315px; | |
top: 455px; | |
} | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
load(url('http://s3.amazonaws.com/rshiny/picktable.Rdat')) | |
load(url('http://s3.amazonaws.com/rshiny/players.Rdat')) | |
load(url('http://s3.amazonaws.com/rshiny/conf.Rdat')) | |
library(plyr) | |
powerRatings <- ddply(adf, .(pick1), summarize, power = sum(betterpick)) | |
powerRatings<-powerRatings[order(powerRatings$power, decreasing=TRUE),] | |
powerRatings$position <- playerdf[match(powerRatings$pick1, playerdf$name),]$pos | |
powerRatings$power <- (powerRatings$power / max(powerRatings$power)) * 100 | |
powerRatings <- powerRatings[order(powerRatings$power, decreasing=TRUE),] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
library(ggplot2) | |
require(shiny) | |
require(data.table) | |
require(rCharts) | |
library(RCurl) | |
library(plyr) | |
shinyServer(function(input, output, session){ | |
newData <- reactive({ | |
# Don't do anything until after the first button push. | |
if (input$action == 0) | |
return(powerRatings) | |
if (input$reset != 0){ | |
return(restart()) | |
input$reset <- 0 | |
} | |
return(isolate({ | |
powerRatings <<- powerRatings[-which(powerRatings$pick1 == input$draftedPlayer),] | |
})) | |
}) | |
restart <- reactive({ | |
powerRatings <- ddply(adf, .(pick1), summarize, power = sum(betterpick)) | |
powerRatings<-powerRatings[order(powerRatings$power, decreasing=TRUE),] | |
powerRatings$position <- playerdf[match(powerRatings$pick1, playerdf$name),]$pos | |
powerRatings$power <- (powerRatings$power / max(powerRatings$power)) * 100 | |
powerRatings <- powerRatings[order(powerRatings$power, decreasing=TRUE),] | |
return(powerRatings) | |
}) | |
inputPower <- reactive({ | |
x <- newData() | |
if(!("All" %in% input$position2)) { | |
a <- x[x[,3] %in% input$position2,]$pick1 | |
return(a) | |
} else{ | |
return(x$pick1) | |
} | |
}) | |
input1Choices <- reactive({ | |
if(!("All" %in% input$position)) { | |
a <- playerdf[playerdf$pos %in% input$position,]$name | |
return(a) | |
} else{ | |
return(playerdf$name) | |
} | |
}) | |
input2Choices <- reactive({ | |
if(!("All" %in% input$position)) { | |
p <- playerdf[-grep(input$player1, playerdf$name),] | |
p <- p[p$pos %in% input$position,] | |
return(p$name) | |
} else { | |
return (playerdf[-grep(input$player1, | |
playerdf$name),]$name) | |
} | |
}) | |
output$draftedPlayer <- renderUI({ | |
selectInput("draftedPlayer", "", choices=inputPower()) | |
}) | |
output$player1 <- renderUI({ | |
selectInput("player1", "", choices=input1Choices()) | |
}) | |
output$player2 <- renderUI({ | |
if(is.null(input$player1)) | |
return() | |
selectInput("player2", "OR", choices=input2Choices()) | |
}) | |
output$table = renderChart2({ | |
if(is.null(input$player2) | is.null(input$player1)){ | |
return(invisible()) | |
} | |
if(input$allPlayers == FALSE){ | |
p1 <- playerdf[playerdf$name == input$player1,] | |
p2 <- playerdf[playerdf$name == input$player2,] | |
d <- as.data.frame(rbind(p1, p2)) | |
dTable(d) | |
} else { | |
if(!("All" %in% input$position)) { | |
p <- playerdf[playerdf$pos %in% input$position,] | |
dTable(p) | |
} else{ | |
dTable(playerdf) | |
} | |
} | |
}) | |
output$plot = renderChart2({ | |
if(is.null(input$player1) | is.null(input$player2)) { | |
return(hPlot$new()) | |
} | |
d1 <- confByDay[which(confByDay$name == input$player1),] | |
d2 <- confByDay[which(confByDay$name == input$player2),] | |
d1 <- d1[order(d1$thedate),] | |
d2 <- d2[order(d2$thedate),] | |
d <- rbind(d1, d2) | |
colnames(d)[3] <- "Uncertainty" | |
h1 <- hPlot(x="thedate", y="Uncertainty", data=d, | |
type=c("line"), group="name") | |
h1$xAxis(labels = list(rotation=-75, align="right"), | |
categories=d$thedate) | |
h1 | |
}) | |
output$text <- renderPrint({ | |
if(is.null(input$player1) | is.null(input$player2)){ | |
return(invisible()) | |
} | |
x1 <- adf[which(adf$pick1 == input$player1 & adf$pick2 == | |
input$player2),]$betterpick | |
x2 <- adf[which(adf$pick1 == input$player2 & adf$pick2 == | |
input$player1),]$betterpick | |
tp1 <- playerdf[which(playerdf$name == input$player1),]$timesPicked | |
tp2 <- playerdf[which(playerdf$name == input$player2),]$timesPicked | |
if(tp1 >= tp2){ | |
tpmin <- tp2 | |
tpmax <- tp1 | |
} else if (tp2 >= tp1){ | |
tpmin <- tp1 | |
tpmax <- tp2 | |
} | |
if(x1 >= x2){ | |
y <- paste(input$player1, " was drafted <br>", | |
signif((x1 / tpmin) * 100, 3), "% of the time before ", input$player2, | |
sep="") | |
o <- HTML(paste("<p><strong>", y, "</p>", sep="")) | |
cat(as.character(o)) | |
} else { | |
y <- paste(input$player1, " was drafted <br>", | |
signif((x1 / tpmax) * 100, 3), "% of the time before ", input$player2, | |
sep="") | |
o <- HTML(paste("<p><strong>", y, "</p>")) | |
cat(as.character(o)) | |
} | |
}) | |
output$powerPosition <- renderPlot({ | |
x <- newData() | |
x1 <- ddply(x, .(position), summarize, meanPower=mean(power)) | |
p <- ggplot(data=x1, aes(x=position, y=meanPower, fill=position)) + geom_bar() | |
print(p) | |
# n1 <- nPlot(meanPower ~ position, group = "position", data = x1, type = "multiBarChart") | |
# n1$print("chart3") | |
# n1 | |
# x2 <- xPlot(meanPower ~ position, group = "position", data = x1, type = "bar") | |
# x2$print("chart4") | |
#p2 <- xCharts$new() | |
#p2$set(xScale = 'ordinal', yScale = 'linear', width = 600) | |
#p2$layer(meanPower ~ position, group = 'position', data = x1, type = 'bar') | |
#p2 | |
}, width=850) | |
output$power <- renderChart2({ | |
if(is.null(newData())){ | |
return() | |
} | |
x <- newData() | |
if(!("All" %in% input$position2)) { | |
p <- x[x[,3] %in% input$position2,] | |
#p <- p[order(p$power, decreasing=TRUE),] | |
dTable(p, aaSorting=list(c(1, "desc"))) | |
} else{ | |
p <- x[order(x[,2], decreasing=TRUE),] | |
dTable(p, aaSorting=list(c(1, "desc"))) | |
} | |
}) | |
output$about <- renderPrint({ | |
info <- "Blah Blah <strong> Blah" | |
cat(as.character(HTML(info))) | |
}) | |
}) | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
library(shiny) | |
shinyUI(pageWithSidebar( | |
headerPanel(title="Fantasy Football - Who Should I Draft?"), | |
sidebarPanel( | |
includeCSS('app.css'), | |
conditionalPanel( | |
condition="input.tabs1=='Compare Two Players'", | |
uiOutput("player1"), | |
uiOutput("player2"), | |
checkboxInput("allPlayers", "Show All Players in Table", FALSE), | |
checkboxGroupInput("position", "Position", c("All"="All", | |
"QB"= "QB", "WR"="WR", "TE"="TE", "RB"="RB", "PK"="PK"), | |
selected="All"), | |
helpText(paste("Data is based on ", sum(playerdf$timesPicked), | |
" picks from ", max(playerdf$timesPicked), " | |
mock drafts from | |
http://www.fantasyfootballcalculator.com", sep="")) | |
), | |
conditionalPanel( | |
condition="input.tabs1=='Power By Position'", | |
checkboxGroupInput("position2", "Position", c("All"="All", | |
"QB"= "QB", "WR"="WR", "TE"="TE", "RB"="RB", "PK"="PK"), | |
selected="All"), | |
uiOutput('draftedPlayer'), | |
actionButton("action", "Player Was Drafted"), | |
actionButton("reset", "Reset"), | |
helpText(paste("The lower chart shows remaining average power by position. Choose players from the dropdown that have been drafted | |
and the chart and table will update. Data is based on ", sum(playerdf$timesPicked), | |
" picks from ", max(playerdf$timesPicked), " | |
mock drafts from | |
http://www.fantasyfootballcalculator.com", sep="")) | |
) | |
), | |
mainPanel( | |
tabsetPanel(id = "tabs1", | |
#plotOutput("plot"), | |
#showOutput("plot", "xcharts"), | |
tabPanel("Power By Position", showOutput('power', 'datatables'), plotOutput('powerPosition')), | |
tabPanel("Compare Two Players", showOutput('plot', 'highcharts'), | |
showOutput('table', 'datatables'), htmlOutput("text")), | |
tabPanel("About", htmlOutput("about")) | |
) | |
#chartOutput('table', 'datatables'), | |
) | |
)) | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment