# COVID-19 Vaccination Timeline - Global Equity Analysis

**Advanced Vaccine Time Series Visualization with Dual-Axis Chart.js Charts**

![Iteration](https://img.shields.io/badge/Iteration-3-blue)
![Level](https://img.shields.io/badge/Level-Advanced-red)
![Disease](https://img.shields.io/badge/Disease-COVID--19-purple)
![Chart Type](https://img.shields.io/badge/Chart-Dual--Axis-green)

## Overview

This visualization tells the story of **COVID-19 vaccination equity** from 2020-2023, revealing stark disparities between high-income and low-income nations. Using dual-axis Chart.js charts, it demonstrates the relationship between vaccination coverage and COVID-19 case reduction across different income levels.

### Key Insights

- **High-Income Nations**: Achieved 75%+ coverage by 2022, early vaccine access
- **Low-Income Nations**: Struggled to reach 25% coverage due to COVAX challenges
- **Equity Gap**: Dramatic difference in vaccine availability between wealthy and poor countries
- **Case Reduction**: Clear correlation between vaccination rates and declining cases in high-income countries

## Technical Features

### 1. Dual-Axis Chart.js Charts (Advanced)

**Implementation based on Chart.js cartesian axes documentation:**

```javascript
// Dual-axis configuration from Chart.js cartesian axes documentation
scales: {
    // LEFT Y-AXIS: Vaccination Coverage (0-100%)
    y: {
        type: 'linear',
        position: 'left',
        title: {
            display: true,
            text: 'Coverage (%)'
        },
        min: 0,
        max: 100
    },
    // RIGHT Y-AXIS: COVID-19 Cases (dynamic range)
    y1: {
        type: 'linear',
        position: 'right',
        grid: {
            drawOnChartArea: false  // Prevent grid overlap
        }
    }
}
```

**Key Technical Details:**
- `yAxisID: 'y'` for coverage dataset (left axis)
- `yAxisID: 'y1'` for cases dataset (right axis)
- Different data ranges: 0-100% vs dynamic case counts
- Prevents grid line overlap with `drawOnChartArea: false`
- Independent scales for optimal data visualization

### 2. Chart Instance Management

**Performance-optimized chart lifecycle:**

```javascript
let activeChart = null;
let chartCounter = 0;
let popupTimeout = null;

// Destroy old chart before creating new one
if (activeChart) {
    activeChart.destroy();
    activeChart = null;
}

// 200ms delay prevents flickering
popupTimeout = setTimeout(() => {
    const ctx = canvas.getContext('2d');
    activeChart = new Chart(ctx, {...});
}, 200);
```

### 3. Full Timeline Controls

- **Play/Pause**: Auto-advance through years
- **Reset**: Jump back to 2020
- **Loop Toggle**: Continuous playback option
- **Manual Slider**: Direct year selection
- **Global Statistics**: Real-time coverage and case counts

### 4. Realistic COVID-19 Data Model

**Income-stratified vaccination rollout:**

```javascript
// High-income: rapid vaccination, early access
coverageByYear = [2, 68, 82, 88];  // 2020: minimal, 2021: rapid rollout

// Low-income: COVAX challenges, minimal early access
coverageByYear = [0, 8, 18, 24];   // Dramatic inequality
```

**Case reduction patterns:**
- High-income: Sharp decline after 2021 vaccination surge
- Low-income: Prolonged case burden due to limited vaccine access

### 5. Shared Architecture Integration

Uses centralized Mapbox configuration:
- `MAPBOX_CONFIG` for token management and validation
- `LayerFactory` for optimized circle layers with data-driven styling
- Medical atmosphere preset for COVID-19 theme

## Data Story

### Timeline Breakdown

**2020: Pandemic Begins**
- Global coverage: ~1%
- No vaccines available yet
- Cases surging worldwide

**2021: Vaccine Rollout (Inequitable)**
- High-income: 68% average coverage
- Low-income: Only 8% coverage
- COVAX struggles to deliver equitable access

**2022: Rich Countries Plateau**
- High-income: 82% coverage, cases declining
- Low-income: Still only 18% coverage
- Equity gap widens

**2023: Ongoing Disparity**
- High-income: 88% coverage, low case counts
- Low-income: 24% coverage, continued health burden
- Lessons about global health equity

### Countries by Income Level

**High-Income** (rapid vaccination):
- United States, United Kingdom, Germany, France, Japan
- Canada, Australia, South Korea, Israel, Singapore

**Upper-Middle Income** (moderate pace):
- Brazil, China, Russia, Mexico, Turkey, South Africa
- Argentina, Thailand

**Lower-Middle Income** (slower rollout):
- India, Indonesia, Egypt, Pakistan, Bangladesh
- Nigeria, Philippines, Vietnam, Kenya

**Low-Income** (COVAX challenges):
- Ethiopia, Tanzania, Uganda, Mozambique
- Madagascar, Malawi, Chad, Haiti

## Web Learning Application

**Assigned URL**: https://www.chartjs.org/docs/latest/axes/cartesian/

**Techniques Learned and Applied:**

1. **Multiple Y-Axes Configuration**
   - Bind datasets to specific axes using `yAxisID`
   - Match `dataset.yAxisID` to scale definitions in options

2. **Axis Positioning**
   - `position: 'left'` for coverage axis
   - `position: 'right'` for cases axis
   - Independent positioning allows side-by-side comparison

3. **Scale Type Declaration**
   - Must explicitly declare `type: 'linear'` for both axes
   - Default types not used in multi-axis scenarios (per documentation)

4. **Grid Overlap Prevention**
   - While `drawOnChartArea` wasn't in the fetched documentation
   - Implementation follows Chart.js best practices to prevent visual clutter

## File Structure

```
vaccine_timeseries_3_covid/
├── index.html          # Complete visualization with dual-axis charts
├── README.md           # This file - COVID-19 equity analysis
└── CLAUDE.md           # Technical documentation and implementation guide
```

## Usage

1. **Open `index.html`** in a modern web browser
2. **Wait for globe to load** with country data points
3. **Hover over any country** to see dual-axis chart popup
4. **Use timeline controls** to explore 2020-2023 progression
5. **Click Play** to auto-advance through years
6. **Observe equity gaps** between high-income and low-income nations

## Technical Stack

- **Mapbox GL JS v3.0.1**: Globe visualization with projection
- **Chart.js v4.4.0**: Dual-axis time series charts
- **Shared Architecture**: Centralized configuration and layer factory
- **ES6 Modules**: Clean imports and code organization

## Key Visualizations

### Dual-Axis Chart Features

- **Line Chart** (Coverage): Smooth line showing vaccination progress with area fill
- **Bar Chart** (Cases): Dramatic visual of case counts by year
- **Color Coding**: Green (coverage) vs Red (cases) for clear distinction
- **Interactive Tooltips**: Hover to see exact values with proper formatting
- **Responsive Legend**: Bottom placement with point style indicators

### Globe Features

- **Color Scale**: Red (0%) → Yellow (50%) → Green (100%)
- **Size Scale**: Proportional to population (6-35px radius)
- **Opacity**: Zoom-responsive for better detail at high zoom
- **Atmosphere**: Medical theme with subtle blue glow
- **Rotation**: Gentle auto-spin when not interacting

## Performance Optimizations

1. **Chart Cleanup**: Destroy previous chart instances before creating new ones
2. **Popup Delay**: 200ms timeout prevents flickering on rapid mouse movement
3. **Timeout Clearing**: Cancel pending popups when leaving features
4. **Unique Canvas IDs**: Counter-based IDs prevent DOM conflicts
5. **RequestAnimationFrame**: Ensures canvas is ready before chart creation

## Health Equity Insights

This visualization reveals critical lessons about **global health equity**:

- **Wealth Determines Health**: High-income countries secured vaccines first through bilateral deals
- **COVAX Limitations**: Initiative to ensure equitable access faced funding and supply challenges
- **Ongoing Disparities**: Even in 2023, low-income countries lag far behind in coverage
- **Public Health Impact**: Lower vaccination rates correlate with prolonged case burden

## Future Enhancements

Potential additions for deeper analysis:

1. **Deaths Data**: Add third axis or overlay for COVID-19 mortality
2. **Vaccine Types**: Show different vaccines (Pfizer, Moderna, AstraZeneca, etc.)
3. **Booster Doses**: Track additional doses beyond primary series
4. **Regional Comparisons**: Compare continents or WHO regions
5. **Supply Chain Data**: Visualize vaccine shipments and donations

## Credits

**Web Learning Source**: Chart.js Cartesian Axes Documentation
**Architecture**: Shared Mapbox configuration and LayerFactory
**Data Model**: Realistic COVID-19 vaccination patterns by income level
**Visualization**: Advanced dual-axis Chart.js implementation

---

**Generated with Advanced Web Learning**
Part of the Infinite Agentic Loop demonstration project showcasing progressive web-based learning and sophisticated data visualization techniques.
