Skip navigation

I’m posting this mostly to show how to:

– use the Google spreadsheet data-munging “hack” from the [previous post]( in a Shiny context
– include it seamlessly into a web page, and
– run it locally without a great deal of wrangling

The code for the app is [in this gist]( It is unsurprisingly just like [some spiffy other code]( you’ve seen apart from my aesthetic choices (Sochi blue! lines+dots! and, current rankings next to country names).

I won’t regurgitate the code here since it’s just as easy to view on [github]( You’re seeing the live results of the app below (unless you’ve been more conservative than most folks with your browser security settings),

but the app is actually hosted over at [Data Driven Security](, a blog and (woefully underpowered so reload if it coughs up blood, pls) Shiny server that I run with @jayjacobs. It appears in this WordPress post with the help of an `IFRAME`. It’s essentially the same technique the RStudio/Shiny folks use in many of their own examples.

The app uses [bootstrapPage()]( to help make a more responsive layout which will react nicely in an `IFRAME` setting (since you won’t know the width of the browser area you’re trying to fit the Shiny output into).

In the `ui.R` file, I have the [plotOutput()]( configured to scale to 100% of container width:

plotOutput("medalsPlot", width="100%")

and then create a seamless `IFRAME` that also sizes to max-width:

<iframe src="" 

The *really cool* part (IMO) about many Shiny apps is that you don’t need to rely on the external server to work with the visualization/output. Provided that:

– the authors have coded their app to support local execution…
– and presented the necessary `ui.R`, `server.R`, `global.R`, HTML/CSS & data files either as a github gist or a zip/gz/tar.gz file…
– and **you** have the necessary libraries installed

then, you can start the app with a simple [Rscript]( one-liner:

Rscript -e "shiny::runGist(8949172, launch.browser=TRUE)"


Rscript -e "shiny::runUrl('', launch.browser=TRUE)"

There is *some* danger doing this if you haven’t read through the R code prior, since it’s possible to stick some fairly malicious operations in an R script (hey, I’m an infosec professional, so we’re always paranoid :-). But, if you stick with using a gist and do examine the code, you should be fine.


  1. Broken.

    No cred for those who wrote the plot and shiny code you borrowed? Boo that.

    • Well, I wrote the dot+line plot code and linked to the other medal sites, so I have no idea what you’re referring to.

  2. Is yet working? Because now It isn’t by me (yesterday worked).

    • (late reply) the site got crushed after posting the link.

    • Matt Bannert (@learnFromInfo)
    • Posted 2014-02-14 at 18:16
    • Permalink
    • Reply

    Nice you mention the gist execution, but where’s the data in such a case typically? Stored locally ? How can the app adjust to that? Or is it rather remote?

    • in this case it’s in a google docs spreadsheet. You can actually package data up with the shiny app to run locally or give users the option to select data files from their local system.

3 Trackbacks/Pingbacks

  1. By One More (Yet-another?) Olympic Medal Live-tracking Shiny App | Patient 2 Earn on 13 Feb 2014 at 5:04 am

    […] article was first published on » R, and kindly contributed to […]

  2. By Genetic Drift – Show Me Shiny on 25 Feb 2014 at 8:08 am

    […] Documentation: none […]

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.