require(antarcticR)
library(png)
library(ggplot2)
library(raster)
library(grid)
library(shiny)
library(plotly)
library("ggplot2")
library("ggimage")
library("dplyr")
library("shiny")
ui <- pageWithSidebar(
headerPanel("antarcticR online"),
sidebarPanel(
HTML("Online visualiser for Antarctica."),
width = 3
),
mainPanel(
# this is an extra div used ONLY to create positioned ancestor for tooltip
# we don't change its position
div(
style = "position:relative",
plotOutput("scatterplot",
hover = hoverOpts("plot_hover", delay = 100, delayType = "debounce")),
uiOutput("hover_info")
),
width = 7
)
)
server <- function(input, output) {
csvFile <- "~/Dropbox/LinuxSync/PhD/ANITA/baseListExtension/data/convertedFiles/baseListCSVs/base_list-A3-unrestricted.csv.0"
#### Function here to turn lats + cardinalities into
points <- read.csv(csvFile, header=0, sep=",")
df.points <- as.matrix(points)
antFrame <- data.frame(df.points)#long=df.points$long, lat=df.points$lat)
colnames(antFrame) = c("name", "latDeg", "latMin", "latCar", "longDeg", "longMin", "longCar", "alt", "altCert", "primaryOperator", "est", "facType", "seasonality")
antFrame$latDeg <- as.numeric(as.character(antFrame$latDeg))
antFrame$latMin <- as.numeric(as.character(antFrame$latMin))
antFrame$lat <- -antFrame$latDeg - antFrame$latMin/60
antFrame$longDeg <- as.numeric(as.character(antFrame$longDeg))
antFrame$longMin <- as.numeric(as.character(antFrame$longMin))
antFrame$longCar <- as.character(antFrame$longCar)
antFrame <- mutate( antFrame, long = ifelse(longCar == "E", longDeg + (longMin)/60, -longDeg - (longMin)/60) )
##antFrame <- longLatToSimpleBEDMAP(antFrame)
##BMgradient=raster("/home/berg/Dropbox/LinuxSync/PhD/ANITA/2017Stuff/clusterDir/antarcticR/data/bedmap2_bin/bedmap2_thickness.flt",xmn=-3333500, xmax=3333500, ymin=-3333500, ymax=3333500,crs=NA,template=NULL)
##BMgradient <- aggregate(BMgradient, fact=50, fun=max)
##p <- rasterToPoints(BMgradient)
##bmdf <- data.frame(p)
##colnames(bmdf) <- c("bbb", "ccc", "varFillBBB")
##bedMap <- ggplot(data=bmdf) + geom_tile(aes(bbb,ccc,fill=varFillBBB)) +
##guides(fill=guide_legend(title="thickness"))
output$scatterplot <- renderPlot({
##world4 <- bedMap +
ggplot() +
geom_point(data = antFrame, aes(x = long, y = lat), size=5, color="green")
##geom_point(data = antFrame, aes(x = easting, y = northing), size=5, color="green")
##world4
})
output$hover_info <- renderUI({
hover <- input$plot_hover
if(1)
{
##point <- nearPoints(antFrame, xvar=antFrame$easting, yvar=antFrame$northing, threshold=10000, maxpoints=1, hover, addDist = TRUE)
point <- nearPoints(antFrame, xvar=antFrame$long, yvar=antFrame$lat, threshold=10000, maxpoints=1, hover, addDist = TRUE)
if (nrow(point) == 0) return(NULL)
left_pct <- (hover$x - hover$domain$left) / (hover$domain$right - hover$domain$left)
top_pct <- (hover$domain$top - hover$y) / (hover$domain$top - hover$domain$bottom)
# calculate distance from left and bottom side of the picture in pixels
left_px <- hover$range$left + left_pct * (hover$range$right - hover$range$left)
top_px <- hover$range$top + top_pct * (hover$range$bottom - hover$range$top)
# create style property for tooltip
# background color is set so tooltip is a bit transparent
# z-index is set so we are sure are tooltip will be on top
style <- paste0("position:absolute; z-index:100; background-color: rgba(245, 245, 245, 0.85); ",
"left:", left_px + 2, "px; top:", top_px + 2, "px;")
# actual tooltip created as wellPanel
wellPanel(
style = style,
p(HTML(paste0("<b> name: </b>", point$name, "<br/>",
"<b> Seasonality: </b>", point$seasonality, "<br/>",
"<b> long: </b>", point$long, "<br/>",
"<b> lat: </b>", point$lat, "<br/>"))))
}
})
}
print("Processed code")
runApp(list(ui = ui, server = server))
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.