Technology Blogs by Members
Explore a vibrant mix of technical expertise, industry insights, and tech buzz in member blogs covering SAP products, technology, and events. Get in the mix!
cancel
Showing results for 
Search instead for 
Did you mean: 
thomasyuan
Explorer

Introduction


When it comes to visualization, animated charts can be very appealing by showing historical trends and movements. Currently animated visuals can be natively created in SAP Analytics Cloud Applications using Timer: "Using Timer in Your Analytic Applications". However if we would like to avoid tweaking data filters for every frame of the animation, and therefore causing data refreshing, SAP Analytics Cloud provides R widget support, with which animated charts can be easily created in R and consumed in a Story.

This blog will use the most frequently visualized data these days at the time of writing, COVID-19 cases. It will walk through the steps to create a animated map showing development of total cases around the world over the last five months. I would assume you possess some basic knowledge to create SAP Analytics Cloud Models and Stories.

Let's start


The data


Our World in Data provides a day-by-day dataset of worldwide COVID-19 cases. It is updated daily and has both daily new cases and cumulated total cases for each country. There is a data quality issue that we will later address: missing dates in the time series. Data can be accessed at:

https://covid.ourworldindata.org/data/owid-covid-data.csv

 

The Model


We will upload the csv file and create an Import model.



We will have a model with a preview like this.


I saved it with the name 'COVID-19-OWID'.

Since the dataset is small, we will deal with the data quality issue later directly in powerful R: it can fix the issue in a couple of lines.

 

The Story


Time to create the story!

Create a story and include the Model that we have from the previous step. Then add and configure R Visualization, as below: choose Dimensions: iso_code, date and location and choose Account total_cases.



 

R Code


Let's go straight to the point: adding following R code to script section. Its logic is explained in embedded comments.
# We use tidyr to cleanse and transform data
library(tidyr)

# We use plotly to generate the chart
library(plotly)

# Source Data Model
COVID_19_OWID %>%
#Remove records that show 0 total cases
filter(total_cases != 0) %>%

#Generate a full permutation of countries and dates, filling total_case as NA for any missing records
mutate(iso_code = factor(iso_code), location=factor(location), date=factor(date)) %>% complete(nesting(iso_code, location), date, fill = list(total_cases = NA)) %>%

# If, for a country, certain dates are missing in the middle, total_cases is then carried forward from a previous date
group_by(location) %>% fill(total_cases, .direction="down") %>% ungroup() %>%

#Data is ready, continue to plot
plot_geo(locationmode="ISO-3") %>%
#Scale is capped at 200,000 cases, making it easier to differentiate countries with smaller numbers
add_trace(z=~total_cases, locations=~iso_code, frame=~date, colorscale="Reds", reversescale=FALSE, zmin=0, zmax=200000) %>%
layout(geo=list(scope="world"), title=~date) %>%
#Frame rate is set to 50ms. Smaller number will result in a faster playback
animation_opts(frame=50, mode="immediate")

 

Tada!


Click on 'Play' button and watch it live!


 

Troubleshooting


If the R scipt shows any error, please check these:

  1. If you used a different Model name, please replace the name at line 8 of R script

  2. Make you your Rows/Columns settings are same as the screenshot above

  3. Test you R runtime by running a simple command: version


 

Other thoughts


Some most frequently asked questions are:

Q: Can we bypass 'Play' button so that the chart can playback and repeat itself automatically?

A: Depends. The functionality is available in package 'gganimate'. However it is not installed in default SAP R server runtime environment. If you happen to be using your own remote R connection, install 'gganimate' and rewrite R code. Just be mindful some interactive features provided by plotly, such as tooltips, will no longer be available.

 

Q: How about live data connection?

A: Your system administrator needs to switch it on for you.


 

Wrap-up


This blog illustrated a simple example on how R widgets can help enrich SAP Analytics Cloud Stories. R widgets provide a great addition to the standard SAP Analytics Cloud charts library. They are particularly suitable in those scenarios where highly specialized visualizations are needed. Furthermore, the abundance of R libraries forms a perfect complement to the powerful SAP Analytics Cloud and SAP HANA Platform.
Labels in this area