Global Disaster Dashboard - DataViz 2024 Winner

Objective

To architect and deploy a dynamic, web-based analytics dashboard that visualises global climate disaster trends from the EM-DAT database. The platform transforms complex environmental risk metrics such as mortality rates, economic losses, and affected populations into actionable, filtered insights to support United Nations SDG Goal 13.1 (Climate Action) and empower policymakers to make data-driven decisions.

tool

Python, Plotly Dash, Bootstrap (Bootswatch), Excel/XLSX, Git

award

First Place Winner, 2024 Postgraduate Data Visualization Challenge (Macquarie University)

Role

Data Analyst

INTRODUCTION

Our project focuses on developing an interactive dashboard that analyzes global disaster data, sourced from the EM-DAT database, to visualize the impacts of climate-related disasters. By tracking key metrics such as total deaths, affected populations, and economic losses, the dashboard provides valuable insights into disaster trends. These insights support the United Nations' SDG Goal 13.1, which aims to strengthen resilience and adaptive capacity to climate-related hazards. Through this tool, policymakers and disaster management agencies can make informed decisions, helping to reduce the risks associated with climate change and enhance global preparedness for future disasters.

DATA

The data used for the dashboard is the EM-DAT Public Table of the International Disaster Database. Additional information could be found on EM-DAT documentation website.

  • EM-DAT was designed in 1988 based on an anthropocentric vision of disasters and emergencies. It considers disasters to be events involving an unexpected and overwhelming harmful impact on human beings. The EM-DAT Public Table is a comprehensive, publicly accessible database that tracks the occurrence and impact of major natural and technological disasters worldwide. Managed by the Centre for Research on the Epidemiology of Disasters (CRED), it includes detailed information on disaster events such as dates, locations, types, and the resulting human and economic losses.

EM-DAT granted free access for non-commercial use.

KEY FEATURE

  • Python programmed: The dashboard built with Python allow easy future development, cross-platform accessibility, and efficient data processing and updates.

  • User-Friendly Interface: Offers an interactive, easy-to-use platform for policymakers, researchers, and disaster management teams.

  • Data-Driven Decisions: Eye-catching visuals and interactive plots, combined with a wide range of filters, allow users to explore disaster impacts, identify high-risk areas, and assess trends, supporting effective disaster preparedness and risk reduction.

  • An SDG 13 approach: By providing real-time insights into climate-related disasters, enabling decision-makers to strengthen resilience, improve disaster preparedness, and reduce the risks associated with climate change impacts.

  • Climate-Related Focus: By highlighting climate-related disasters, the dashboard underscores the growing impact of climate change on global vulnerabilities, reinforcing the urgency for adaptation and mitigation efforts.

THE AWARED DASHBOARD

PROJECT EXECUTION

I. Data & Functions Preparation

1. Import necessary libraries

  • dash, dash_core_components, dash_html_components, and dash.dependencies are used to create interactive dashboard components.

  • dash_mantine_components and dash_bootstrap_components are used for UI components and styling.

  • pandas and numpy are used for data manipulation and calculations.

  • plotly.express and plotly.graph_objects are used for data visualization.

  • webbrowser and threading enable the dashboard to open automatically in the browser after starting the app.

2. Load and clean the dataset

  • The dataset is loaded from an Excel file (cleaned_emrat.xlsx) using pandas.

  • data['last_update']: Date fields are converted to datetime objects to handle date-related filters and visualizations.

  • data['year']: The year column is converted to string, resolving an incompatibility issue with Dash's dcc.RangeSlider.

3. Calculate key statistics

  • total_deaths, total_affected, total_damage: The sum of deaths, affected people, and economic damages across all records.

  • most_deaths_country, most_affected_country, most_damaged_country: Identify the countries with the highest impact in terms of deaths, people affected, and damage.

4. Prepare filters for user interaction

  • Unique values from years, months, continents, subregions, countries, and disaster_types are extracted from the dataset to populate dropdowns and sliders.

  • A combination of Year and Month is created as a new column for more granular filtering.

II. Creating the Dash App

1. App initialization

  • dash.Dash(): Initializes the app.

  • external_stylesheets: Dash Bootstrap theme is used for responsive layout and aesthetic UI.

  • app.layout: Defines the overall structure of the dashboard, organized into two rows (R1: Title and Filters, R2: Cards and Charts).

2. Row 1: Title and Filter Section

  • Title: Displays the dashboard title, "Global Disaster Statistics".

  • Filters: Multiple filter options are available for users, including:

    • Year and Month (dcc.RangeSlider and dcc.Dropdown).

    • Location-based filters (Continent, Subregion, Country using dcc.Dropdown).

    • Disaster types (dcc.Checklist), where each type is represented with an image.

3. Row 2: Statistics and Graphs

  • Statistics Cards: Six statistics cards display:

    • Total deaths, total people affected, total damage, and countries with the most impact in terms of deaths, affected people, and damage.

  • Map and Charts: Two columns contain:

    • A total damage map and a disaster count map.

    • A stacked bar chart showing trends of disasters by type.

    • A line chart visualizing the trend in deaths over the years.

  • More about the dash layout could be found in code comments in dash_app.py

III. Callbacks for Interactivity

1. Update filters dynamically

  • Subregion Filter: The subregion dropdown updates based on the selected continent.

  • Country Filter: The country dropdown updates based on the selected subregion.

2. Reset filters

  • The "Reset Filter" button resets all filters back to their default values.

3. Update statistics dynamically

  • Each statistics card updates its content based on the selected filters, calculating the total deaths, affected people, damage, and most impacted countries dynamically.

4. Dynamic Maps and Charts

  • Damage Map: A choropleth map visualizing the total damage caused by disasters, with countries colored by damage categories.

  • Disaster Count Map: A choropleth map displaying the number of disasters in each country.

  • Stacked Bar Chart: A stacked bar chart showing the number of disasters by type over the years.

  • Casualty Trend Line Chart: A line chart displaying the trend in total deaths caused by disasters over the years.

IV. Running the App

  • The app starts with app.run_server(debug=True).

  • Optionally, the dashboard can open automatically in the browser using the webbrowser library and Timer function.

FIRST PLACE WINNER TEAM

Available For Work

Curious about what we can create together? Let’s bring something extraordinary to life!

hello@framebase.design

Design In Framer

All rights reserved, ©2025

Available For Work

Curious about what we can create together? Let’s bring something extraordinary to life!

hello@framebase.design

Design In Framer

All rights reserved, ©2025

Available For Work

Curious about what we can create together? Let’s bring something extraordinary to life!

hello@framebase.design

Design In Framer

All rights reserved, ©2025