Skip to content

Instantly share code, notes, and snippets.

Last active June 17, 2021 18:37
Show Gist options
  • Star 27 You must be signed in to star a gist
  • Fork 19 You must be signed in to fork a gist
  • Save jcheng5/3239667 to your computer and use it in GitHub Desktop.
Save jcheng5/3239667 to your computer and use it in GitHub Desktop.
Shiny example: Diamonds Explorer
function(input, output) {
dataset <- reactive({
diamonds[sample(nrow(diamonds), input$sampleSize),]
output$plot <- renderPlot({
p <- ggplot(dataset(), aes_string(x=input$x, y=input$y)) + geom_point()
if (input$color != 'None')
p <- p + aes_string(color=input$color)
facets <- paste(input$facet_row, '~', input$facet_col)
if (facets != '. ~ .')
p <- p + facet_grid(facets)
if (input$jitter)
p <- p + geom_jitter()
if (input$smooth)
p <- p + geom_smooth()
}, height=700)
dataset <- diamonds
headerPanel("Diamonds Explorer"),
sliderInput('sampleSize', 'Sample Size', min=1, max=nrow(dataset),
value=min(1000, nrow(dataset)), step=500, round=0),
selectInput('x', 'X', names(dataset)),
selectInput('y', 'Y', names(dataset), names(dataset)[[2]]),
selectInput('color', 'Color', c('None', names(dataset))),
checkboxInput('jitter', 'Jitter'),
checkboxInput('smooth', 'Smooth'),
selectInput('facet_row', 'Facet Row', c(None='.', names(dataset))),
selectInput('facet_col', 'Facet Column', c(None='.', names(dataset)))
Copy link

ramsdgp commented Aug 29, 2013

what is the source of the data set, can i access that.

dataset <- reactive(function() {
diamonds[sample(nrow(diamonds), input$sampleSize),]

Copy link

Impressive once I figured out which facet variable would be interesting to choose. For example X = price, Y=carat, Color=color, Facet Row = cut, Facet Column = clarity.

runApp() gives a warning: "Passing functions to 'reactive' is deprecated. Please use expressions instead." ?reactive doesn't talk about a replacement function. How would you update server.R to fix this deprecated function?

Copy link

jcheng5 commented Mar 24, 2014

@paul4forest: Fixed, thanks. You stop passing in a real function and just pass in an expression. So reactive(function() { "foo" }) now becomes reactive({ "foo" }).

Copy link

@ramsdgp: diamonds is a dataset built into the ggplot2 package. So you can see it more directly with something like:


Copy link

Hi. This fails for me with Error in grid.Call(L_textBounds, as.graphicsAnnot(x$label), x$x, x$y, : polygon edge not found. Any idea why? (edit--- please ignore I just needed to re-install Cairo)
Really useful example, thanks for sharing jcheng5!

Copy link

Hi guys, I have a problem of building web apps with R using googleVis on shiny. My OS system is MacbookPro and I use RStudio. I updated GoogleVis to 0.56 version as well as shiny.
When I tried to repeat the first example on the following website (, I got the error msg below.


  • Unable to deploy package dependency 'manipulate'

    The package was installed locally from source. Only packages
    installed from CRAN, BioConductor and GitHub are supported.

This is same error msg as the one I got two days ago when I tried to run GoogleVis and shiny together.
According to the website, "using googleVis on shiny" should be feasible, right!?
Any idea what's wrong on my issue?

Thanks for your time on reading and help.

Copy link

For some reason, my app does not like printing both ggplot and qplot with the same function. Does qplot() have some different print command I'm not aware of?

Copy link

Nevermind. Found I had another bug. Print command works FINE for both.

Copy link

I am getting an error:

Warning: Error in as.character: cannot coerce type 'environment' to vector of type 'character'
Stack trace (innermost first):
    4: <Anonymous>
    2: print.shiny.appobj
    1: <Promise>
Error : cannot coerce type 'environment' to vector of type 'character'

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment