Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.
An interactive infographic can be used to communicate a lot of information in an engaging way. With the right tools, they are also relatively straightforward to create. In this post, I show step-by-step how to create this interactive infographic, using Canva, Displayr and R code. The interactive example is designed so that the user can change the country and have the infographic update automatically.
Tools used to create an interactive infographic: Canva is used to create the base infographic. The calculations, charting, and automatic text-writing are performed using the R language. It is all hooked up with Displayr.
Step 1: Create or download the infographic
I start by going to Canva, and choosing the Neat Interactive Gaming Infographic (tip: use Find Templates on the left-hand panel). You could, of course, design your own infographic, either in Canva or elsewhere. I like Canva, but the key thing is to create an infographic image some way. In Canva, I edited the template by deleting the bits that I wanted to replace with interactive charts and visualizations and then I download the infographic as a PNG file (2,000 pixels high by 800 wide).
Step 2: Import the infographic into Displayr
Create an account in Displayr, and then click the button that says + New Document. Set the page size to the same aspect ratio as the PNG file (Home > Page Layout > Layout > Page Size > Custom). For this example, the page should be 20 inches high and 8 inches wide.
Next, insert the infographic into Displayr (Insert > Image), move and resize it to fit the page (tip: you can use the Properties panel on the right to type in pixels 800 x 2000 to reset the correct aspect ratio of the image).
Step 3: Get the data into Displayr
The data that will make the infographic interactive needs to be hooked up in Displayr. The data used to create the infographic in this example is shown to the right. There are lots of ways to import data into Displayr (e.g., importing a raw data file and creating the tables in Displayr). For this example, the data has been pasted into Displayr from Excel using the steps below.
To paste the data into Displayr:
- Insert > Paste Table (Data), click Add data (on the right of the screen).
- Paste in the data. Alternatively, you could type it into this screen. I first just pasted in the Age Distribution data and press OK.
- Properties > GENERAL and type AgeDistribution into the Label field and check the Automatic option (above).
- Drag the table so that it is to the left of the infographic.
- Hide the table (select it, Appearance > Hide). It will stay visible but will be invisible when you share the infographic.
Repeat this process for AverageAge, Ratio, and Multiplayer. It is important that you give each of these tables these names, as we refer to them later in our R code.
Step 4: Add the country selector
Next, I add a control so that the user can change country:
- Insert > Control
- Item list: China, US, Europe
- Move it to the top of the screen and style as desired ( size, color, border)
- Name: Click on the control and select China
- Properties > GENERAL > Name: Country
I then insert a text box (“GAMERS”), and placed it to the left of the control (i.e.: : Impact, size: 48, color: #ffb600).
Step 5: Create the charts and visualizations in R
Finally, create the charts and visualizations in Displayr using the following R code.
The column chart
I created the column chart using my colleague Carmen’s nifty wrapper-function for plotly. Insert an R Output in Displayr (Insert > R Output), and copy and paste the following code, pressing Calculate and resizing moving and resizing the chart.
flipStandardCharts::Chart(AgeDistribution[, Country], type = "Column", background.fill.color = "#212121", charting.area.fill.color = "#212121", colors = "tiel", x.tick..color = "white", x.tick..size = 20, x.grid.width = 0, y.tick..color = "white", y.tick..size = 20, y.title = "%", y.title..color = "white", y.grid.width = 0)
Average age
The average age was also created by inserting an R Output, using the code below. While I could have written the formatting in R, I instead used the various formatting tools built into Displayr (Properties >LAYOUT and Properties > APPEARANCE).
AverageAge[,Country]
The hearts pictograph
This was also done using an R Output in Displayr, with the following code (using R GitHub packages built by my colleagues Kyle and Carmen).
women = Ratio["Women", Country] total = sum(Ratio[, Country]) flipPictographs::SinglePicto(women, total, layout = "Number of columns", number.cols = 5, image = "Heart", hide.base.image = FALSE, auto.size = TRUE, fill.icon.color = "red", base.icon.color = "cyan", background.color ="#212121" )
The R code used to create the textbox is below (tip: toggle on Wrap text output at the bottom of the Properties panel on the right)
women = Ratio["Women", Country] total = sum(Ratio[, Country]) paste0(women, " IN ", total, " GAMERS ARE WOMEN")
The pie chart
This is the R code for the pie chart:
flipStandardCharts::Chart(Multiplayer[, Country], type = "Pie", colors = c(rgb(175/255, 224/255, 170/255), rgb(0/255, 181/255, 180/255)), data.label..color = "White", data.label..size = 18, data.label.decimals = 0, data.label.suffix = "%")
The R code used to create the textbox was:
one.player = Multiplayer["1 player", Country] paste0(one.player, "% OF PEOPLE PLAY VIDEO GAMES ON THEIR OWN")
Create the interactive infographic yourself
Sign in to Displayr and edit the document used to create the interactive infographic here. In Edit mode you can click on each of the charts, pictographs, and text boxes to see the underlying code. The final document was published (i.e., turned into a Dashboard) using Export > Web Page. Or you can view the interactive infographic created using the instructions above.
R-bloggers.com offers daily e-mail updates about R news and tutorials about learning R and many other topics. Click here if you're looking to post or find an R/data-science job.
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.