You are currently browsing the category archive for the ‘Shiny’ category.
The articles section on shiny.rstudio.com has lots of great advice for Shiny developers.
A recent article by Dean Attali demonstrates how to save data from a Shiny app to persistent storage structures, like local files, servers, databases, and more. When you do this, your data remains after the app has closed, which opens new doors for data collection and analysis.
Read Dean’s article and more at shiny.rstudio.com/articles
We’ve added two new tools that make it even easier to learn Shiny.
The How to Start with Shiny training video provides a new way to teach yourself Shiny. The video covers everything you need to know to build your own Shiny apps. You’ll learn:
- The architecture of a Shiny app
- A template for making apps quickly
- The basics of building Shiny apps
- How to add sliders, drop down menus, buttons, and more to your apps
- How to share Shiny apps
- How to control reactions in your apps to
- update displays
- trigger code
- reduce computation
- delay reactions
- How to add design elements to your apps
- How to customize the layout of an app
- How to style your apps with CSS
Altogether, the video contains two hours and 25 minutes of material organized around a navigable table of contents.
Best of all, the video tutorial is completely free. The video is the result of our recent How to Start Shiny webinar series. Thank you to everyone who attended and made the series a success!
Watch the new video tutorial here.
New cheat sheet
The new Shiny cheat sheet provides an up-to-date reference to the most important Shiny functions.
The cheat sheet replaces the previous cheat sheet, adding new sections on single-file apps, reactivity, CSS and more. The new sheet also gave us a chance to apply some of the things we’ve learned about making cheat sheets since the original Shiny cheat sheet came out.
Get the new Shiny cheat sheet here.
Shiny 0.12 has been released to CRAN!
Compared to version 0.11.1, the major changes are:
- Interactive plots with base graphics and ggplot2
- Switch from RJSONIO to jsonlite
For a full list of changes and bugfixes in this version, see the NEWS file.
To install the new version of Shiny, run:
htmlwidgets is not required, but shiny 0.12 will not work with older versions of htmlwidgets, so it’s a good idea to install a fresh copy along with Shiny.
Interactive plots with base graphics and ggplot2
The major new feature in this version of Shiny is the ability to create interactive plots using R’s base graphics or ggplot2. Adding interactivity is easy: it just requires using one option in
plotOutput(), and then the information about mouse events will be available via the
You can use mouse events to read mouse coordinates, select or deselect points, and implement zooming. Here are some example applications:
- Basic interactions
- Advanced interactions: This demonstrates many advanced features of interactive plots.
- Excluding points (as depicted in the screen capture above)
Switch from RJSONIO to jsonlite
In previous versions of Shiny, the data was serialized to/from JSON using the RJSONIO package. However, as of 0.12.0, Shiny switched from RJSONIO to jsonlite. The reasons for this are that jsonlite has better-defined conversion behavior, and it has better performance because much of it is now implemented in C.
For the vast majority of users, this will have no impact on existing Shiny apps.
The htmlwidgets package has also switched to jsonlite, and any Shiny apps that use htmlwidgets also require an upgrade to that package.
A note about Data Tables
The version we just released to CRAN is actually 0.12.1; the previous version, 0.12.0, was released three weeks ago and deprecated Shiny’s
renderDataTable functions and instructed you to migrate to the nascent DT package instead. (We’ll talk more about DT in a future blog post.)
User feedback has indicated this transition was too sudden and abrupt, so we’ve undeprecated these functions in 0.12.1. We’ll continue to support these functions until DT has had more time to mature.
- Automatically plots xts time-series objects (or objects convertible to xts).
- Rich interactive features including zoom/pan and series/point highlighting.
- Highly configurable axis and series display (including optional 2nd Y-axis).
- Display upper/lower bars (e.g. prediction intervals) around series.
- Various graph overlays including shaded regions, event lines, and annotations.
- Use at the R console just like conventional R plots (via RStudio Viewer).
- Embeddable within R Markdown documents and Shiny web applications.
The dygraphs package is available on CRAN now and can be installed with:
Here are some examples of interactive time series visualizations you can create with only a line or two of R code (the screenshots are static, click them to see the interactive version).
Panning and Zooming
This code adds a range selector that’s can be used to pan and zoom around the series data:
dygraph(nhtemp, main = "New Haven Temperatures") %>% dyRangeSelector()
When you hover over the time-series the values of all points at the location of the mouse are shown in the legend:
lungDeaths <- cbind(ldeaths, mdeaths, fdeaths) dygraph(lungDeaths, main = "Deaths from Lung Disease (UK)") %>% dyOptions(colors = RColorBrewer::brewer.pal(3, "Set2"))
Shading and Annotations
There are a wide variety of tools available to annotate time series. Here we demonstrate creating shaded regions:
dygraph(nhtemp, main="New Haven Temperatures") %>% dySeries(label="Temp (F)", color="black") %>% dyShading(from="1920-1-1", to="1930-1-1", color="#FFE6E6") %>% dyShading(from="1940-1-1", to="1950-1-1", color="#CCEBD6")
You can find additional examples and documentation on the dygraphs for R website.
One of the reasons we are excited about dygraphs is that it takes a mature and feature rich visualization library formerly only accessible to web developers and makes it available to all R users.
Action buttons can be tricky to use in Shiny because they work differently than other widgets. Widgets like sliders and select boxes maintain a value that is easy to use in your code. But the value of an action button is arbitrary. What should you do with it? Did you know that you should almost always call the value of an action button from
The newest article at the Shiny Development Center explains how action buttons work, and it provides five useful patterns for working with action buttons. These patterns also work well with action links.
Read the article here.
RStudio is excited to announce the general availability (GA) of shinyapps.io.
Shinyapps.io is an easy to use, secure, and scalable hosted service already being used by thousands of professionals and students to deploy Shiny applications on the web. Effective today, shinyapps.io has completed beta testing and is generally available as a commercial service for anyone.
As regular readers of our blog know, Shiny is a popular free and open source R package from RStudio that simplifies the creation of interactive web applications, dashboards, and reports. Until today, Shiny Server and Shiny Server Pro were the most popular ways to share shiny apps. Now, there is a commercially supported alternative for individuals and groups who don’t have the time or resources to install and manage their own servers.
We want to thank the nearly 8,000 people who created at least one shiny app and deployed it on shinyapps.io during its extensive alpha and beta testing phases! The service was improved for everyone because of your willingness to give us feedback and bear with us as we continuously added to its capabilities.
For R users developing shiny applications that haven’t yet created a shinyapps.io account, we hope you’ll give it a try soon! We did our best to keep the pricing simple and predictable with Free, Basic, Standard, and Professional plans. Each paid plan has features and functionality that we think will appeal to different users and can be purchased with a credit card by month or year. You can learn more about shinyapps.io pricing plans and product features on our website.
We hope to see your shiny app on shinyapps.io soon!
Great news for Shiny and R Markdown enthusiasts!
An Interactive Reporting Workshop with Shiny and R Markdown is coming to a city near you. Act fast as only 20 seats are available for each workshop.
You can find out more / register by clicking on the link for your city!
|East Coast||West Coast|
|March 2 – Washington, DC||April 15 – Los Angeles, CA|
|March 4 – New York, NY||April 17 – San Francisco, CA|
|March 6 – Boston, MA||April 20 – Seattle, WA|
You’ll want to take this workshop if…
You have some experience working with R already. You should have written a number of functions, and be comfortable with R’s basic data structures (vectors, matrices, arrays, lists, and data frames).
You will learn from…
The workshop is taught by Garrett Grolemund. Garrett is the Editor-in-Chief of shiny.rstudio.com, the development center for the Shiny R package. He is also the author of Hands-On Programming with R as well as Data Science with R, a forthcoming book by O’Reilly Media. Garrett works as a Data Scientist and Chief Instructor for RStudio, Inc. GitHub
Shiny version 0.11 is available now! Notable changes include:
- Shiny has migrated from Bootstrap 2 to Bootstrap 3 for its web front end. More on this below.
- The old jsliders have been replaced with ion.rangeSlider. These sliders look better, are easier for users to interact with, and support updating more fields from the server side.
- There is a new
passwordInput()which can be used to create password fields.
eventReactive()functions greatly streamline the use of
actionButtonand other inputs that act more like events than reactive inputs.
For a full set of changes, see the NEWS file. To install, run:
We’ve also posted an article with notes on upgrading to 0.11.
Bootstrap 3 migration
In all versions of Shiny prior to 0.11, Shiny has used the Bootstrap 2 framework for its web front-end. Shiny generates HTML that is structured to work with Bootstrap, and this makes it easy to create pages with sidebars, tabs, dropdown menus, mobile device support, and so on.
The Bootstrap development team stopped development on the Bootstrap 2 series after version 2.3.2, which was released over a year ago, and has since focused their efforts on Bootstrap 3. The new version of Bootstrap builds on many of the same underlying ideas, but it also has many small changes – for example, many of the CSS class names have changed.
In Shiny 0.11, we’ve moved to Bootstrap 3. For most Shiny users, the transition will be seamless; the only differences you’ll see are slight changes to fonts and spacing.
If, however, you customized any of your code to use features specific to Bootstrap 2, then you may need to update your code to work with Bootstrap 3 (see the Bootstrap migration guide for details). If you don’t want to update your code right away, you can use the shinybootstrap2 package for backward compatibility with Bootstrap 2 – using it requires adding just two lines of code. If you do use shinybootstrap2, we suggest using it just as an interim solution until you update your code for Bootstrap 3, because Shiny development going forward will use Bootstrap 3.
Why is Shiny moving to Bootstrap 3? One reason is support: as mentioned earlier, Bootstrap 2 is no longer developed and is no longer supported. Another reason is that there is dynamic community of actively-developed Bootstrap 3 themes. (Themes for Bootstrap 2 also exist, but there is less development activity.) Using these themes will allow you to customize the appearance of a Shiny app so that it doesn’t just look like… a Shiny app.
We’ve also created a package that make it easy to use Bootstrap themes: shinythemes. Here’s an example using the included Flatly theme:
See the shinythemes site for more screenshots and instructions on how to use it.
The shinydashboard package still under development, but feel free to try it out and give us feedback.
RStudio is happy to announce the availability of the shinyapps.io beta.
Shinyapps.io is an easy to use, secure, and scalable hosted service already being used by thousands of professionals and students to deploy Shiny applications on the web. Today we are releasing a significant upgrade as we transition from alpha to beta, the final step before general availability (GA) later this quarter.
New Feature Highlights in shinyapps.io beta
- Secure and manage authorized users with support for new authentication systems, including Google, GitHub, or a shinyapps.io account.
- Tune application performance by controlling the resources available. Run multiple R processes per application instance and add application instances.
- Track performance metrics and simplify application management in a new shinyapps.io dashboard. See an application’s active connections, CPU, memory, and network usage. Review application logs, start, stop, restart, rebuild and archive applications all from one convenient place.
During the beta period, these and all other features in shinyapps.io are available at no charge. At the end of the beta, users may subscribe to a plan of their choice or transition their applications to the free plan.
If you do not already have an account, we encourage anyone developing Shiny applications to consider shinyapps.io beta and appreciate any and all feedback on our features or proposed packaging and pricing.
Happy New Year!
An htmlwidget works just like an R plot except it produces an interactive web visualization. A line or two of R code is all it takes to produce a D3 graphic or Leaflet map. Widgets can be used at the R console as well as embedded in R Markdown reports and Shiny web applications. Here’s an example of using leaflet directly from the R console:
When printed at the console the leaflet widget displays in the RStudio Viewer pane. All of the tools typically available for plots are also available for widgets, including history, zooming, and export to file/clipboard (note that when not running within RStudio widgets will display in an external web browser).
Here’s the same widget in an R Markdown report. Widgets automatically print as HTML within R Markdown documents and even respect the default knitr figure width and height.
Widgets also provide Shiny output bindings so can be easily used within web applications. Here’s the same widget in a Shiny application:
The htmlwidgets framework is a collaboration between Ramnath Vaidyanathan (rCharts), Kenton Russell (Timely Portfolio), and RStudio. We’ve all spent countless hours creating bindings between R and the web and were motivated to create a framework that made this as easy as possible for all R developers.
Here are a few widget libraries that have been built so far:
- leaflet, a library for creating dynamic maps that support panning and zooming, with various annotations like markers, polygons, and popups.
- dygraphs, which provides rich facilities for charting time-series data and includes support for many interactive features including series/point highlighting, zooming, and panning.
- networkD3, a library for creating D3 network graphs including force directed networks, Sankey diagrams, and Reingold-Tilford tree networks.
- DataTables, which displays R matrices or data frames as interactive HTML tables that support filtering, pagination, and sorting.
- rthreejs, which features 3D scatterplots and globes based on WebGL.
All of these libraries combine visualization with direct interactivity, enabling users to explore data dynamically. For example, time-series visualizations created with dygraphs allow dynamic panning and zooming:
To learn more about the framework and see a showcase of the available widgets in action check out the htmlwidgets web site. To learn more about building your own widgets, install the htmlwidgets package from CRAN and check out the developer documentation.