# What do you use to generate a dashboard in R?

I need to generate periodic (daily, monthly) web analytics dashboard reports. They will be static and don't require interaction, so imagine a PDF file as the target output. The reports will mix tables and charts (mainly sparkline and bullet graphs created with ggplot2). Think Stephen Few/Perceptual Edge style dashboards, such as:

but applied to web analytics.

Any suggestions on what packages to use creating these dashboard reports?

My first intuition is to use R markdown and knitr, but perhaps you've found a better solution. I can't seem to find rich examples of dashboards generated from R.

• I suggest replacing untagged tag with r, dashboards, reports or similar. – Aleksandr Blekh Aug 5 '14 at 7:22
• Did you created this dashboard as described above? I would love to have a look at the code! – Kare Nov 4 '14 at 7:43

I think that Shiny is an overkill in this situation and doesn't match your requirement of dashboard reports to be static. I guess, that your use of the term "dashboard" is a bit confusing, as some people might consider that it has more emphasis of interactivity (real-time dashboards), rather than information layout, as is my understanding (confirmed by the "static" requirement).

My recommendation to you is to use R Markdown and knitr, especially since these packages have much lower learning curve than Shiny. Moreover, I have recently run across an R package, which, in my view, ideally suits your requirement of embedding small charts/plots in a report, as presented on your picture above. This package generates static or dynamic graphical tables and is called sparkTable (http://cran.r-project.org/web/packages/sparkTable). Its vignette is available here (there is no link to it on the package's home page): http://publik.tuwien.ac.at/files/PubDat_228663.pdf. Should you ever need some interactivity, sparkTable provides some via its simple interface to Shiny.

• I didn't know about sparkTable, looks like a great tool for the job. – shadowtalker Aug 5 '14 at 12:16
• @ssdecontrol: Until recently, I didn't know about it, too. Looks like a great tool, for sure. I look forward to trying it in my project, if I will have a need and opportunity. – Aleksandr Blekh Aug 5 '14 at 17:50

Shiny is a framework for generating HTML-based apps that execute R code dynamically. Shiny apps can stand alone or be built into Markdown documents with knitr, and Shiny development is fully integrated into RStudio. There's even a free service called shinyapps.io for hosting Shiny apps, the shiny package has functions for deploying Shiny apps directly from R, and RStudio has a GUI interface for calling those functions. There's plenty more info in the Tutorial section of the site.

Since it essentially "compiles" the whole thing to JavaScript and HTML, you can use CSS to freely change the formatting and layout, although Shiny has decent wrapper functionality for this. But it just so happens that their default color scheme is similar to the one in the screenshot you posted.

edit: I just realized you don't need them to be dynamic. Shiny still makes very nice-looking webpages out of the box, with lots of options for rearranging elements. There's also functionality for downloading plots, so you can generate your dashboard every month by just updating your data files in the app, and then saving the resulting image to PDF.

I did find Flex Dashboard option pretty cool, interactive and easy to use. Give it a try maybe you would too.

Meanwhile, you can also try these as well.

Hope it helps! (Update me if you get something even better than that.)

I had to create a web based dashboard. My main charting tool was d3js. But I needed to use ggplot2 to generate few charts. Through d3js's ggplot2 extension, I could create the same. If your charts can be generated through existing extension, then web has better alternatives. Later you can export them to PDF for distribution.

R also has an htmlwidgets package that incorporated D3 javascript visualizations at: http://www.htmlwidgets.org/

You could try ShinyDashboard and leave out any interactive aspects. In my opinion it is still nice to allow users to zoom in on plots or search for certain values in a column. Shiny will allow you to do this.