Improving the Wuhan Coronavirus dashboard

36

The COVID-19 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:

LEARN MORE | See all Coronavirus dashboard blog posts

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

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

  • 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

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

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

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

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

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 Information Box

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 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.
  • And I trimmed down the information in the info box, so you can see it all without scrolling.

Discussion

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 screen-capture of their new/improved dashboard. Looking good Johns Hopkins!

  • The numbers in the 'Confirmed' column are now red, to match the red bubbles in the map.
  • The red bubbles are now gone from the 'Deaths' column.
  • The proportions of the line graph are now much taller.
  • They've added a date/timestamp (bottom/left corner).
  • You can now read all the main/important items in the information box without scrolling.
  • They've changed the title to "Coronavirus COVID-19" (which is the latest name being used in the news).
  • You can now zoom-in the map such that it shows all the countries (excluding Antarctica) without big blank margins forcing the countries to be small.

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.

Update (Feb 24, 2020)

Now that the virus has spread to many other countries, I have added drill-down links to my dashboard, so you can click the countries in the map, or the country names in the tables, and see a graph of that country's data.

Update (Mar 11, 2020)

Some of my colleagues at SAS have created a Novel Coronavirus Report using SAS Visual Analytics that depicts the status, locations, spread and trend analysis of the coronavirus. Data is updated nightly. The ability to visualize the COVID-19 outbreak can help raise awareness, understand its impact and can ultimately assist in prevention efforts. View the public dashboard here to see maps based in ESRI, coronavirus statistics, and an animated timeline of worldwide spread.

LEARN MORE | See all Coronavirus dashboard blog posts

Update (Mar26, 2020)

Since the Johns Hopkins is no longer reporting the 'recovered' data, I have replaced that column in the dashboard with a column showing the daily increase in confirmed cases.

Share

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.

36 Comments

  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). 🙂

    • I'll 2nd Aaron's suggestion! It was my first thought when I clicked on a country... as I was anticipating seeing that distribution. You've done such a fine job with improving the quality/value of the dashboard that it seems unfinished without at least the State/Province numbers withing the country.

      Having the city data would be great if it was easily available, yet, not as desirable as the State/Province information.

      This really is well done!

  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!

  7. Interesting, Is it real number? There is nothing in India, the second or maybe first now, populated country, or they don't want to give there numbers? There is a red dot at Mumbai but we can't see it in the cumulative list. The improved dashboard is very nice. Can we receive an update by email, twice a month (using real data)?

  8. Excellent upgrade! First time I saw the JH dashboard, I thought it would be awesome to include age groups somewhere in there. This of course would be to show which age-groups are more susceptible to contacting the virus. May be a version 2 from you could include that... 🙂

  9. Rosemary Byrne on

    I agree with all of your improvements. One thing I think that would be interesting would be to also include a stat that shows the outcomes over time. I'm not a health data expert, but I'm assuming that people look at the deaths and recoveries as a point in time measure of the deadliness of the disease. Something like, of the cases with outcomes (deaths + recoveries) x% are deaths. But, of course using recognized official mortality equations if they exist. This is the first number I calculated after looking at this for a bit. I think also that if a vaccine is introduced, we should see a distinct change in the mortality and that would be of interest both globally, and specific to each country.

  10. I've been following this dashboard daily - thanks! When I refreshed it today, it was still showing a snapshot from 11th March, but with lower figures than before, notably for the US. Has someone been re-writing history?

    • Robert Allison

      They refresh their data nightly, and I refresh my dashboard in the morning. It's still pretty early in the eastern US timezone (7:30am), so I haven't refreshed with last night's data yet. The US numbers were high yesterday because John's Hopkins started adding extra lines to their data (they used to just have city/county numbers, but now they also added state summary numbers ... so when I sum'd them it was double-counting ... I tweaked my code yesterday afternoon with a data-work-around).

  11. That's great stuff, Rob !
    Where I struggle is getting a relative death comparison for say 2017 / 2018 / 2019 / 2020
    And specifically by death... as the death rate seems the definitive measurement of a virus's seriousness.
    If the current "pandemic" is not a serious as other years then I think the Media and Governments have a lot to answer for.
    Cheers s.

    • i was here to say something similar. since many people think the crisis as being overplayed, " it is no worse than the seasonal flu", ia comparison would be telling.

      if the covid dashboard was used for the 2018-2019 influenza season, how would it be different, similar?

      • Robert Allison

        As with a lot of "ideas" for data visualization, the hard part is getting the data - I'm not sure where I could get daily flu counts for all the countries of the world, like Johns Hopkins has compiled for the coronavirus (they have done a lot of data "heavy lifting" to prepare this data that they graciously let everyone use!)

Leave A Reply

Back to Top