Improving the Wuhan Coronavirus dashboard


The Wuhan Coronavirus outbreak has been in the news a lot lately, and everyone is probably looking for a quick/easy way to see the data. The best visualization I've seen so far is this dashboard by Johns Hopkins. Here's a screen-capture:

To Make the Best Better

When I was growing up, I was in the 4-H club. Our motto was "To make the best better" ... and I guess that stuck with me. I even apply that motto to graphs! Therefore, I decided to see what I could do to improve Johns Hopkins' dashboard. My goal was to make the dashboard easier to read and comprehend, while keeping the same look and layout as the original. Below are some of the problems I saw in the their dashboard:

Title (problems)

Let's start with the title at the top of the page:

  • Some people might not know that "2019-nCoV" is Wuhan Coronavirus, therefore I would spell that out.
  • And even though they are updating the dashboard as new data comes in, I think it would be good to show some sort of date/timestamp in the title.

Map (problems)

The graphic occupying the most space in the dashboard is the map. It represents the number of confirmed coronavirus cases using red bubbles.

  • The biggest problem with the map is that some of the bubbles represent countries, and some represent smaller geographical areas (such as provinces in China). While it might be interesting to see a bubble for the number of cases in the Guizhou province in China, it does not make good visual/graphical sense to compare that to the bubble for countries (such as the US) in the same map. I believe all the bubbles should represent the country level.
  • Having the ability to pan and zoom the map is cool, but what I think most people would like to see is the whole world. And if you zoom out to see the whole world, the countries are very small, because there is a lot of wasted space around the edges (especially since the map includes Antarctica).
  • Although you get a general feel for which countries have coronavirus, based on the position of the bubbles, it would be nice to see the affected countries shaded differently than the non-affected countries.

Total Confirmed Summary (problems)

To the left of the map is a summary count of the total number of confirmed cases, with a table below it.

  • Since the table and map both show the number of confirmed cases, I think it would be nice if they used the same color, to visually tie them together.
  • They used to show regions (such as provinces in China, and states from the US) in this table. Now that they have changed it to country-level summaries, they could remove 'Region' from the title and save some space.
  • If the numbers were right-justified, they would be easier to read and compare.

Total Deaths Summary (problems)

The summary count of total deaths is to the right of the map.

  • The biggest problem/confusion is the red bubbles - at first I thought these were somehow tied to the red bubbles in the map ... but maybe not(?). I don't see a need for them. They just add confusion.
  • Some of the areas listed in the table have 0 deaths. Why are areas with zero deaths in the table?
  • If the table showing the total number of confirmed cases is summarized at the country level, why not summarize the deaths table at the same level?

Total Recovered Summary (problems)

The summary count of the number of people who recovered from the virus is located at the far-right of the dashboard.

  • If the table showing the total number of confirmed cases is summarized at the country level, why not summarize this recovered cases table at the same level?

Graph (problems)

The time series graph is below the map. It shows how the number of confirmed cases has increased over time.

  • The biggest problem here is the layout - the graph is so wide and short that you can't tell much about what the data is doing.
  • The legend occupies 1/3 of the space (almost 1/2) - the legend could be placed in a different position, and allow the graph to utilize that extra space.
  • The sideways label along the y-axis is difficult to read.
  • The markers along the lines appear to be at evenly-spaced time increments, although the timestamps in the data do not appear to be at evenly-spaced time increments.

The Information Box (problems)

There is an information box in the bottom/right corner of the dashboard, with links to information about the dashboard and the data.

  • The main problem is that you can't see all the information without scrolling.

My Improved Dashboard!

Here's my new/improved version of the dashboard. Click the image below to see the full-size interactive version, with HTML mouse-over text. If it's too big to fit in your browser, try pressing the "Ctrl" and "-" (minus key) on your keyboard at the same time to shrink it (similarly, use "Ctrl" and "+" to enlarge it again).

Here is a list of my improvements:

  • I added "Wuhan Coronavirus" to the title.
  • I add a date/timestamp to the title.
  • The bubbles in my map all represent country totals (no provinces, etc).
  • I show the full world map, and do it in such a way that it fills the entire space.
  • I make the countries that do/don't have cases of the virus different shades, in the map.
  • I make the numbers in the Total Confirmed table red, so they match the color of the bubbles in the map.
  • I make the numbers in my tables right-justified, so they're easier to read and compare.
  • I do not include red bubbles in my Total Deaths table.
  • I do not show areas in the Total Deaths table, that have not had deaths.
  • I summarize at the country level in the Total Deaths and Total Recovered tables.
  • I move the legend inside the graph area, freeing up more space for the graph to be taller.
  • I place the label above the legend, rather than up/down along the y-axis.
  • I plot the markers at the actual data-snapshot timestamps, rather than making them look evenly spaced.
  • And I trimmed down the information in the info box, so you can see it all without scrolling.


Which of the changes did you like & not like? What other changes would you recommend? Feel free to discuss in the comments section.

I created my prototype dashboard with SAS Software. If you would like to see all the nitty-gritty details, here is a link to the complete SAS code I used.

Update (Feb 5, 2020)

Looks like Johns Hopkins has made several of the improvements I recommended in their dashboard (yay!) Here's a new screen-capture of their new/improved dashboard. Looking good JH!


Update (Feb 9, 2020)

Johns Hopkins moved their data from a Google spreadsheet to csv files in GitHub, and changed the format a little. Here is my new SAS code that works with the GitHub data.



About Author

Robert Allison

The Graph Guy!

Robert has worked at SAS for over a quarter century, and his specialty is customizing graphs and maps - adding those little extra touches that help them answer your questions at a glance. His educational background is in Computer Science, and he holds a BS, MS, and PhD from NC State University.


  1. Robert - solid suggestions. Did you spin up a working/interactive dashboard? Can you post a link to that? Thanks!

  2. I like your version better, for all the reasons you mention. However, that is as a single static graph. To enhance it even further, I would suggest making it hierarchical, so with a click on any specific country, the graph automatically zooms to that country, and displays the distribution at the next more detailed level (province, state, region). Then county, then city ... The title should identify the level. Then it could be a template for many other spatial distributions, whether epidemiologic or financial sales results ...

    • Robert Allison

      Excellent idea, and a definite possibility. I would need to have the hierarchical data, down to the city level, to make that happen (and, of course, I would need to do a bit more coding). 🙂

  3. Thanks looks great, very useful.

    I wouldn't mind seeing newly reported cases in time, basically the daily derivative of the cumulative plot. I think this is important to gauge if the disease is spreading faster or slower hopefully. ie. are medical initiates getting on top or not,.

  4. Great post and cool Improvements. Just one point - The WHO explicitly discourages naming epidemics or viruses after locations, people etc in order not to create unjust and negative associations. I would recommend with the official naming and not to call it Wuhan Coronavirus which
    might be perceived as insensitive.

  5. I would really like to see a graph of infected by city or province within China as well other countries over time … any idea if this can be done where I can get the data?

  6. Bruce Nawrocki on

    Do you have a suggestion or preference of when to use PROC GREPLAY to produce charts/maps/tables in specific areas of a screen or page, as opposed to ODS REGION statements? I always use ODS REGION statements, but perhaps I should give PROC GREPLAY a try.

    • Robert Allison

      In my case, I don't know the new ODS Layout (with ODS Region), so that's the main reason I used Proc Greplay. I haven't spent much time learning ODS Layout yet, because (I think?) it can only be used for output such as PDF(?) ... whereas greplay produces a single png file, with an html overlay for the mouse-over text and drilldowns. - I haven't really checked into ODS Layout much yet, therefore I might be wrong on those details!

Leave A Reply

Back to Top