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, anddash.dependenciesare used to create interactive dashboard components.dash_mantine_componentsanddash_bootstrap_componentsare used for UI components and styling.pandasandnumpyare used for data manipulation and calculations.plotly.expressandplotly.graph_objectsare used for data visualization.webbrowserandthreadingenable 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) usingpandas.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'sdcc.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, anddisaster_typesare extracted from the dataset to populate dropdowns and sliders.A combination of
YearandMonthis 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.RangeSlideranddcc.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
webbrowserlibrary andTimerfunction.
FIRST PLACE WINNER TEAM



