**The Epidemiological Journey of COVID-19 Vaccine: From Global Development to BangladeshIntroduction: The Epidemiological Journey of COVID-19 Vaccine Initial Emergence: SARS-CoV-2 first identified in Wuhan, China (Dec 2019). Global Impact: Declared a pandemic by WHO in March 2020. Vaccine Breakthrough: First vaccines (Pfizer, AstraZeneca) rolled out in late 2020.
# Map 1: Primary Origin
library(leaflet)
leaflet() %>%
addTiles() %>%
setView(lng = 114.3, lat = 30.6, zoom = 4) %>%
addCircleMarkers(lng = 114.3055, lat = 30.5928, color = "red", radius = 10,
popup = "Primary Origin: Wuhan, China")
Global Rollout: Historical Context The global vaccination journey began in late 2020. First Country: The United Kingdom was the first to administer the Pfizer-BioNTech vaccine. Date: December 8, 2020.
library(leaflet)
library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
# ১.data
vax_data <- data.frame(
region = c("Bangladesh", "USA", "UK", "India", "China", "Pakistan", "Brazil", "Germany"),
lat = c(23.685, 37.090, 55.378, 20.593, 35.861, 30.375, -14.235, 51.165),
lng = c(90.356, -95.712, -3.436, 78.962, 104.195, 69.345, -51.925, 10.451),
vax_rate = c(82, 79, 85, 75, 90, 65, 88, 80)
)
# ২.leflat map
leaflet(vax_data) %>%
addTiles() %>%
addCircleMarkers(
~lng, ~lat,
radius = ~vax_rate/5,
color = "darkgreen",
fillOpacity = 0.7,
popup = ~paste0("<b>Country: </b>", region, "<br><b>Vax Rate: </b>", vax_rate, "%")
) %>%
setView(lng = 30, lat = 20, zoom = 2)
Methodology: Tracking the Vaccination
Data Source: WHO and DGHS Bangladesh.
Metrics: Tracking first, second, and booster dose coverage.
Cold Chain: Monitoring storage requirements for mRNA vaccines.
# ১. প্রয়োজনীয় লাইব্রেরি লোড করা
if (!require(ggplot2)) install.packages("ggplot2") # যদি ইনস্টল না থাকে তবে করে নিবে
## Loading required package: ggplot2
library(ggplot2)
# ২. ডেটা ফ্রেম তৈরি
bd_divisions <- data.frame(
Division = c("Dhaka", "Chattogram", "Rajshahi", "Khulna", "Sylhet", "Barishal", "Rangpur", "Mymensingh"),
Doses_In_Millions = c(45.2, 32.5, 18.1, 17.8, 11.2, 9.8, 15.4, 12.1)
)
# ৩. প্লটিং
ggplot(bd_divisions, aes(x = reorder(Division, Doses_In_Millions), y = Doses_In_Millions, fill = Division)) +
geom_bar(stat = "identity", color = "white") +
geom_text(aes(label = Doses_In_Millions), hjust = -0.2, size = 3.5) +
coord_flip() +
expand_limits(y = 50) + # টেক্সট লেবেল যেন কেটে না যায় সেজন্য রেঞ্জ বাড়ানো হয়েছে
labs(title = "Vaccination Distribution by Division in Bangladesh",
subtitle = "Total doses administered across major divisions",
x = "Division",
y = "Total Doses (Millions)",
caption = "Data Source: DGHS Trends") +
theme_minimal() +
theme(legend.position = "none")
Results & Discussion Infection Hotspots: Dhaka and Narayanganj were
the primary hotspots during June 2020.
Recovery Insights: Although Dhaka had the highest cases, the recovery rate varied significantly across districts due to differences in healthcare infrastructure.
Data Observation: The circular markers on the map represent the intensity of the outbreak. Larger and darker red circles indicate higher infection rates.
# 1. Load Libraries
if (!require(leaflet)) install.packages("leaflet")
library(leaflet)
# 2. Data Preparation (64 Districts with Confirmed & Recovered Cases)
# Including coordinates for mapping
covid_data <- data.frame(
district = c("Dhaka", "Chittagong", "Gazipur", "Narayanganj", "Cumilla", "Sylhet", "Rajshahi", "Bogra", "Khulna", "Barisal", "Rangpur", "Mymensingh", "Jessore", "Feni", "Noakhali", "Chandpur", "Brahmanbaria", "Narsingdi", "Tangail", "Manikganj", "Munshiganj", "Faridpur", "Madaripur", "Gopalganj", "Rajbari", "Shariatpur", "Kishoreganj", "Netrokona", "Sherpur", "Jamalpur", "Pabna", "Sirajganj", "Naogaon", "Natore", "Nawabganj", "Gaibandha", "Kurigram", "Nilphamari", "Dinajpur", "Panchagarh", "Thakurgaon", "Kushtia", "Magura", "Jhenaidah", "Chuadanga", "Meherpur", "Satkhira", "Bagerhat", "Narail", "Pirojpur", "Jhalokati", "Patuakhali", "Barguna", "Bhola", "Habiganj", "Moulvibazar", "Sunamganj", "Cox's Bazar", "Khagrachari", "Rangamati", "Bandarban", "Lakshmipur", "Lalmonirhat", "Joypurhat"),
lat = c(23.8103, 22.3569, 24.0023, 23.6238, 23.4607, 24.8949, 24.3745, 24.8481, 22.8456, 22.7010, 25.7439, 24.7471, 23.1664, 23.0159, 22.8695, 23.2333, 23.9571, 23.9230, 24.2513, 23.8644, 23.5422, 23.6071, 23.1712, 23.0050, 23.7574, 23.2423, 24.4260, 24.8700, 25.0204, 24.9330, 24.0158, 24.4577, 24.9130, 24.4137, 24.5911, 25.3287, 25.8103, 25.9319, 25.6217, 26.3331, 26.0330, 23.9013, 23.4873, 23.5448, 23.6337, 23.7622, 22.7185, 22.6516, 23.1725, 22.5841, 22.6406, 22.3524, 22.1591, 22.6859, 24.3749, 24.4829, 25.0658, 21.4272, 23.1193, 22.6574, 22.1953, 22.9425, 25.9124, 25.1010),
lon = c(90.4125, 91.7832, 90.4264, 90.5000, 91.1809, 91.8687, 88.6042, 89.3730, 89.5403, 90.3535, 89.2752, 90.4203, 89.2081, 91.3976, 91.0996, 90.6667, 91.1167, 90.7181, 89.9167, 90.0046, 90.5305, 89.8429, 90.1973, 89.8267, 89.6444, 90.4335, 90.7826, 90.7270, 90.0121, 89.9463, 89.2337, 89.7084, 88.9530, 88.9813, 88.2743, 89.5280, 89.6426, 88.8465, 88.6470, 88.5617, 88.4617, 89.1204, 89.4199, 89.1751, 88.8514, 88.6318, 89.0711, 89.7859, 89.5126, 89.9720, 90.1973, 90.3345, 90.1255, 90.6440, 91.4126, 91.7605, 91.3950, 92.0058, 91.9415, 92.1735, 92.2184, 90.8411, 89.4486, 89.0209),
confirmed = sample(500:20000, 64), # Random sample data for project
recovered = sample(100:5000, 64)
)
# 3. Create Color Palette
pal <- colorNumeric(palette = "YlOrRd", domain = covid_data$confirmed)
# 4. Create Map
leaflet(covid_data) %>%
addTiles() %>%
addProviderTiles(providers$CartoDB.Positron) %>%
addCircleMarkers(
lng = ~lon, lat = ~lat,
radius = ~sqrt(confirmed)/10, # Marker size based on confirmed cases
color = ~pal(confirmed),
fillOpacity = 0.7,
stroke = FALSE,
popup = ~paste0("<b>District: </b>", district,
"<br><b>Confirmed: </b>", confirmed,
"<br><b>Recovered: </b>", recovered)
) %>%
addLegend(pal = pal, values = ~confirmed, title = "Confirmed Cases", position = "bottomright")
Results: Bangladesh Vaccination Drive
Start Date: January 27, 2021.
Coverage: Over 150 million doses administered.
Hotspots: Dhaka and Chattogram show highest coverage.
# STEP 1: Load necessary libraries
if (!require(leaflet)) install.packages("leaflet")
library(leaflet)
# STEP 2: Create Dataset for 64 Districts
districts_data <- data.frame(
district = c("Dhaka", "Chittagong", "Gazipur", "Narayanganj", "Cumilla", "Sylhet", "Rajshahi", "Bogra", "Khulna", "Barisal", "Rangpur", "Mymensingh", "Jessore", "Feni", "Noakhali", "Chandpur", "Brahmanbaria", "Narsingdi", "Tangail", "Manikganj", "Munshiganj", "Faridpur", "Madaripur", "Gopalganj", "Rajbari", "Shariatpur", "Kishoreganj", "Netrokona", "Sherpur", "Jamalpur", "Pabna", "Sirajganj", "Naogaon", "Natore", "Nawabganj", "Gaibandha", "Kurigram", "Nilphamari", "Dinajpur", "Panchagarh", "Thakurgaon", "Kushtia", "Magura", "Jhenaidah", "Chuadanga", "Meherpur", "Satkhira", "Bagerhat", "Narail", "Pirojpur", "Jhalokati", "Patuakhali", "Barguna", "Bhola", "Habiganj", "Moulvibazar", "Sunamganj", "Cox's Bazar", "Khagrachari", "Rangamati", "Bandarban", "Lakshmipur", "Lalmonirhat", "Joypurhat"),
lat = c(23.8103, 22.3569, 24.0023, 23.6238, 23.4607, 24.8949, 24.3745, 24.8481, 22.8456, 22.7010, 25.7439, 24.7471, 23.1664, 23.0159, 22.8695, 23.2333, 23.9571, 23.9230, 24.2513, 23.8644, 23.5422, 23.6071, 23.1712, 23.0050, 23.7574, 23.2423, 24.4260, 24.8700, 25.0204, 24.9330, 24.0158, 24.4577, 24.9130, 24.4137, 24.5911, 25.3287, 25.8103, 25.9319, 25.6217, 26.3331, 26.0330, 23.9013, 23.4873, 23.5448, 23.6337, 23.7622, 22.7185, 22.6516, 23.1725, 22.5841, 22.6406, 22.3524, 22.1591, 22.6859, 24.3749, 24.4829, 25.0658, 21.4272, 23.1193, 22.6574, 22.1953, 22.9425, 25.9124, 25.1010),
lon = c(90.4125, 91.7832, 90.4264, 90.5000, 91.1809, 91.8687, 88.6042, 89.3730, 89.5403, 90.3535, 89.2752, 90.4203, 89.2081, 91.3976, 91.0996, 90.6667, 91.1167, 90.7181, 89.9167, 90.0046, 90.5305, 89.8429, 90.1973, 89.8267, 89.6444, 90.4335, 90.7826, 90.7270, 90.0121, 89.9463, 89.2337, 89.7084, 88.9530, 88.9813, 88.2743, 89.5280, 89.6426, 88.8465, 88.6470, 88.5617, 88.4617, 89.1204, 89.4199, 89.1751, 88.8514, 88.6318, 89.0711, 89.7859, 89.5126, 89.9720, 90.1973, 90.3345, 90.1255, 90.6440, 91.4126, 91.7605, 91.3950, 92.0058, 91.9415, 92.1735, 92.2184, 90.8411, 89.4486, 89.0209),
vax_count = sample(200000:1500000, 64, replace = TRUE) # Sample data
)
# STEP 3: Define Color Palette
pal <- colorNumeric(palette = "YlGnBu", domain = districts_data$vax_count)
# STEP 4: Create Interactive Map
leaflet(districts_data) %>%
addTiles() %>%
addProviderTiles(providers$CartoDB.Positron) %>%
addCircleMarkers(
lng = ~lon, lat = ~lat,
radius = ~sqrt(vax_count)/25,
color = ~pal(vax_count),
fillOpacity = 0.8,
stroke = FALSE,
popup = ~paste0("<b>District: </b>", district,
"<br><b>Total Doses: </b>", format(vax_count, big.mark=","))
) %>%
addLegend(pal = pal, values = ~vax_count, title = "Vaccinations", position = "bottomright")
Conclusion: Future Strategy
Regular Boosters: Transitioning to annual vaccination.
Local Production: Establishing vaccine plants in Bangladesh.
Awareness: Fighting vaccine hesitancy in rural areas.
# ============================================================
# PROJECT: COVID-19 DISTRICT-WISE ANALYSIS (BANGLADESH)
# ============================================================
# 1. LOAD LIBRARIES
if (!require(leaflet)) install.packages("leaflet")
if (!require(dplyr)) install.packages("dplyr")
if (!require(ggplot2)) install.packages("ggplot2")
library(leaflet)
library(dplyr)
library(ggplot2)
# 2. DATA PREPARATION (64 Districts with Sample Research Data)
# Note: Coordinates are set for all 64 districts of Bangladesh
bd_data <- data.frame(
district = c("Dhaka", "Chittagong", "Gazipur", "Narayanganj", "Cumilla", "Sylhet", "Rajshahi", "Bogra", "Khulna", "Barisal", "Rangpur", "Mymensingh", "Jessore", "Feni", "Noakhali", "Chandpur", "Brahmanbaria", "Narsingdi", "Tangail", "Manikganj", "Munshiganj", "Faridpur", "Madaripur", "Gopalganj", "Rajbari", "Shariatpur", "Kishoreganj", "Netrokona", "Sherpur", "Jamalpur", "Pabna", "Sirajganj", "Naogaon", "Natore", "Nawabganj", "Gaibandha", "Kurigram", "Nilphamari", "Dinajpur", "Panchagarh", "Thakurgaon", "Kushtia", "Magura", "Jhenaidah", "Chuadanga", "Meherpur", "Satkhira", "Bagerhat", "Narail", "Pirojpur", "Jhalokati", "Patuakhali", "Barguna", "Bhola", "Habiganj", "Moulvibazar", "Sunamganj", "Cox's Bazar", "Khagrachari", "Rangamati", "Bandarban", "Lakshmipur", "Lalmonirhat", "Joypurhat"),
lat = c(23.8103, 22.3569, 24.0023, 23.6238, 23.4607, 24.8949, 24.3745, 24.8481, 22.8456, 22.7010, 25.7439, 24.7471, 23.1664, 23.0159, 22.8695, 23.2333, 23.9571, 23.9230, 24.2513, 23.8644, 23.5422, 23.6071, 23.1712, 23.0050, 23.7574, 23.2423, 24.4260, 24.8700, 25.0204, 24.9330, 24.0158, 24.4577, 24.9130, 24.4137, 24.5911, 25.3287, 25.8103, 25.9319, 25.6217, 26.3331, 26.0330, 23.9013, 23.4873, 23.5448, 23.6337, 23.7622, 22.7185, 22.6516, 23.1725, 22.5841, 22.6406, 22.3524, 22.1591, 22.6859, 24.3749, 24.4829, 25.0658, 21.4272, 23.1193, 22.6574, 22.1953, 22.9425, 25.9124, 25.1010),
lon = c(90.4125, 91.7832, 90.4264, 90.5000, 91.1809, 91.8687, 88.6042, 89.3730, 89.5403, 90.3535, 89.2752, 90.4203, 89.2081, 91.3976, 91.0996, 90.6667, 91.1167, 90.7181, 89.9167, 90.0046, 90.5305, 89.8429, 90.1973, 89.8267, 89.6444, 90.4335, 90.7826, 90.7270, 90.0121, 89.9463, 89.2337, 89.7084, 88.9530, 88.9813, 88.2743, 89.5280, 89.6426, 88.8465, 88.6470, 88.5617, 88.4617, 89.1204, 89.4199, 89.1751, 88.8514, 88.6318, 89.0711, 89.7859, 89.5126, 89.9720, 90.1973, 90.3345, 90.1255, 90.6440, 91.4126, 91.7605, 91.3950, 92.0058, 91.9415, 92.1735, 92.2184, 90.8411, 89.4486, 89.0209),
confirmed = sample(1000:30000, 64),
recovered = sample(500:8000, 64)
)
# 3. ANALYSIS CALCULATIONS
bd_data <- bd_data %>%
mutate(recovery_rate = (recovered / confirmed) * 100)
# ------------------------------------------------------------
# TOPIC 1: MAP OF HIGHEST LOAD DISTRICTS (Infection Burden)
# ------------------------------------------------------------
pal_load <- colorNumeric(palette = "Reds", domain = bd_data$confirmed)
map_load <- leaflet(bd_data) %>%
addTiles() %>%
addCircleMarkers(
lng = ~lon, lat = ~lat,
radius = ~sqrt(confirmed)/15,
color = ~pal_load(confirmed),
fillOpacity = 0.7,
popup = ~paste0("<b>", district, "</b><br>Confirmed: ", confirmed)
) %>%
addLegend(pal = pal_load, values = ~confirmed, title = "Total Confirmed", position = "bottomright")
# ------------------------------------------------------------
# TOPIC 2: MAP OF HIGHEST RECOVERY RATE (Health Performance)
# ------------------------------------------------------------
pal_recover <- colorNumeric(palette = "YlGn", domain = bd_data$recovery_rate)
map_recovery <- leaflet(bd_data) %>%
addProviderTiles(providers$CartoDB.Positron) %>%
addCircleMarkers(
lng = ~lon, lat = ~lat,
radius = 8,
color = ~pal_recover(recovery_rate),
fillOpacity = 0.9,
popup = ~paste0("<b>", district, "</b><br>Recovery Rate: ", round(recovery_rate, 1), "%")
) %>%
addLegend(pal = pal_recover, values = ~recovery_rate, title = "Recovery %", position = "bottomleft")
# ------------------------------------------------------------
# TOPIC 3: BAR CHART OF TOP 10 HIGHEST CASES
# ------------------------------------------------------------
top_10_plot <- bd_data %>%
arrange(desc(confirmed)) %>%
head(10) %>%
ggplot(aes(x = reorder(district, -confirmed), y = confirmed, fill = confirmed)) +
geom_bar(stat = "identity") +
theme_minimal() +
labs(title = "Top 10 Districts with Highest COVID-19 Cases", x = "District", y = "Confirmed Cases") +
scale_fill_gradient(low = "orange", high = "red")
# 4. VIEW RESULTS
print(top_10_plot) # Shows the Graph
map_load # Shows the Infection Map
map_recovery # Shows the Recovery Rate Map