Best package for interactive graphs in Shiny



There are a number of packages that we can use to make interactive plots in Shiny. Personally I use a lot of plotly (by that I mean their original syntax, not ggploty() which is nice but not sufficient), RStudio seems to favour dygraphs (at least for time series) and I’ve seen people use both highcharts and anycharts.

What is interactive? By a broad definition, ggplot and ggvis can be considered to be interactive when incorporated into an interactive shiny app. However, when I say interactive I mainly refer to the ability of hoover-functions.

I like plotly, it has a syntax that takes advantage of the magrittr package and it is easily linked to basic dplyr-functions. It does have a tidyverse-feel to it. However, it is obvious that plotly is not built for Shiny and therefore can be a little bit laborious. Furthermore I am not fully satisifed in how plotly-plots behave in Shiny apps.

What are your experiences with these packages? Is there anyone who has delved deeper into this, running performance tests on these packages when incorporated in Shiny apps?

This topic mainly refers to basic plots such as time series, scatter plots, bar plots and so on. For maps, use this topic.


I haven’t done any performance tests, I’d love to see what results of such a test look like. I like highcharts, which is easily accessed through the highcharter package. However one potential constraint of using highcharts is that the products in the highcharts library are free for non-commercial use only.


You might find this thread useful


I am currently working on a Shiny application that has a customizable interactive graph, and I have chosen to use ggvis due to the speed at which it can re-make the graph. A user can make make a change to the graph, and see the result almost instantly. It also helps that is integrates so well with dplyr.


Interesting. I really like ggvis. However, the lack of hoovering is a problem for me. Not that the hoovering itself necessarily improves the analysis but as soon as I see a graph online I want to be able to see what’s in it.


I use ggiraph a lot. I prefer it over plotly because it keeps the ggplot look and feel, and I prefer it over ggvis because the language is just an extension of ggplot. The probable downside (I never tested it) is that it’s probably slower to run than ggvis or plotly.

I’d happily move to ggvis if it ever ends up being a finished product - I’m leery of using it while there’s a chance it will go through extensive changes down the road.


ggvis actually supports mouse hovering. Check out the add_toolip function.