# Globe Visualization 4: Global Digital Infrastructure **Multi-Layer Mapbox Globe Visualization - Iteration 4** This is the fourth iteration in a progressive learning series demonstrating advanced Mapbox GL JS techniques with globe projection. This iteration synthesizes all previous learnings and introduces multi-layer composition with choropleth maps. ## 🌍 Theme: Global Digital Infrastructure & Connectivity This visualization showcases the global digital landscape by combining multiple data layers: - **Internet penetration rates** by country (choropleth/fill layer) - **Major tech hubs and internet exchange points** (circle layer) - **International connectivity links** between major hubs (line layer) - **City labels** for top-tier tech centers (symbol layer) ## 📚 Learning Progression ### Previous Iterations: 1. **Iteration 1**: Population circles - Single layer visualization with basic circle styling 2. **Iteration 2**: Temperature heatmap - Single layer with heatmap type and color gradients 3. **Iteration 3**: Economic data-driven styling - Advanced expressions and conditional styling 4. **Iteration 4** (this): Multi-layer composition synthesizing all techniques ## 🔬 Web-Enhanced Learning **Research Source**: Mapbox GL JS Choropleth Documentation **URL**: https://docs.mapbox.com/mapbox-gl-js/example/updating-choropleth/ ### Key Choropleth Techniques Learned: 1. **Fill Layer Configuration** - Using `type: 'fill'` for geographic region visualization - Applying filters to show/hide specific features - Managing multiple fill layers with different zoom levels 2. **Data-Driven Styling** - `interpolate` expressions for smooth color gradients - Linear color scales mapping data values to visual properties - Dynamic paint properties based on feature attributes 3. **Layer Composition** - Combining fill, circle, line, and symbol layers - Managing layer order and visibility - Coordinating opacity across multiple layers 4. **Interactive Features** - Zoom-based layer visibility - Dynamic legend updates - Filter-based layer management ## 🎨 Multi-Layer Architecture ### Layer 1: Country Choropleth (Fill as Circles) - **Data**: 100+ countries with internet penetration percentages - **Styling**: Color interpolation from red (low) to green (high) - **Features**: Data-driven circle sizing based on population - **Expression**: Linear interpolation across 8 color stops (0-100%) ### Layer 2: Tech Hub Circles - **Data**: 80 major tech cities and internet exchange points - **Styling**: Size based on importance score (4-18px radius) - **Colors**: - Tech Hubs: #4ecdc4 (cyan) - Internet Exchanges: #ff6b6b (red) - **Expression**: Categorical matching for hub types ### Layer 3: Connection Lines - **Data**: International links between Tier 1 hubs (importance ≥ 85) - **Styling**: Gradient lines with data-driven width - **Features**: Line gradient from cyan to green - **Expression**: Width based on connection strength (400-1000 range) ### Layer 4: City Labels - **Data**: Labels for top tech hubs (importance ≥ 75) - **Styling**: Size scaled by importance (10-14px) - **Features**: White text with black halo for readability ## 🎛️ Advanced Features ### Interactive Controls **Layer Toggles**: - Show/hide countries, cities, connections, and labels independently - Real-time layer visibility management **Filter Controls**: - **Region Filter**: View specific continents (6 regions + all) - **Metric Filter**: Switch between internet penetration and digital index - Dynamic legend updates based on selected metric **Opacity Sliders**: - Independent opacity control for each layer type - Real-time visual feedback with percentage display - Range: 0-100% for fine-tuned transparency ### Visual Design **Color Schemes**: - **Internet Penetration**: 8-stop gradient (red → yellow → green) - **Digital Index**: 4-stop grayscale gradient - **Tech Hubs**: Cyan for hubs, red for exchanges - **Connections**: Cyan-to-green gradient lines **Globe Features**: - Atmosphere with space-color and star-intensity - Auto-rotation when not interacting - Smooth transitions between data views ### Data Visualization **Country Data** (100+ countries): - Internet penetration: 15-99% - Digital infrastructure index: 25-95 - Population: 1.2M - 1.4B - Regional grouping: 6 regions **City Data** (80 tech hubs): - Tier 1 (90-100): 8 global capitals - Tier 2 (75-89): 16 major centers - Tier 3 (60-74): 26 emerging cities - Tier 4 (45-59): 30 regional centers **Connection Network**: - Automatic generation between Tier 1 hubs - Cross-country connections only - Strength-based line width ## 🔧 Technical Implementation ### Multi-Layer Composition Pattern ```javascript // Layer ordering (bottom to top): 1. country-fills (choropleth base) 2. hub-connections (lines) 3. tech-hubs (circles) 4. city-labels (symbols) ``` ### Data-Driven Expression Examples **Choropleth Color Interpolation**: ```javascript 'circle-color': [ 'interpolate', ['linear'], ['get', 'internetPenetration'], 0, '#cc0000', // Dark red 30, '#ff3300', // Red-orange 50, '#ff9900', // Orange 70, '#33cc33', // Light green 90, '#004d00' // Dark green ] ``` **Size-Based Scaling**: ```javascript 'circle-radius': [ 'interpolate', ['linear'], ['get', 'importance'], 45, 4, // Small cities 75, 9, // Medium cities 100, 18 // Major hubs ] ``` **Categorical Styling**: ```javascript 'circle-color': [ 'match', ['get', 'type'], 'Internet Exchange', '#ff6b6b', 'Tech Hub', '#4ecdc4', '#95e1d3' // fallback ] ``` ### Filter Implementation **Region-Based Filtering**: ```javascript // Countries map.setFilter('country-fills', ['==', ['get', 'region'], region]); // Cities (join with country data) const regionCountries = countriesData.features .filter(f => f.properties.region === region) .map(f => f.properties.country); map.setFilter('tech-hubs', ['in', ['get', 'country'], ['literal', regionCountries]]); ``` ## 📊 Statistics Dashboard **Global Metrics Display**: - Total countries: 100+ - Average internet penetration: ~66% - Total tech hubs: 80 - Tier 1 hubs: 8 - International links: Dynamic count ## 🎯 Synthesis of Learning This visualization demonstrates cumulative mastery of: 1. **From Iteration 1**: Circle layer fundamentals, basic styling, globe projection 2. **From Iteration 2**: Color gradients, data-driven opacity, visual layering 3. **From Iteration 3**: Advanced expressions, conditional styling, property matching 4. **New in Iteration 4**: - Multi-layer composition and ordering - Choropleth/fill techniques adapted for circles - Layer visibility management - Cross-layer filtering and coordination - Multiple simultaneous data sources - Advanced UI control integration ## 🚀 Usage 1. Open `index.html` in a modern web browser 2. Use layer toggles to show/hide different visualization layers 3. Apply region filters to focus on specific continents 4. Switch metrics to view different country-level data 5. Adjust opacity sliders for optimal visual composition 6. Click countries or cities for detailed information 7. Let the globe auto-rotate or interact manually ## 📁 Project Structure ``` mapbox_globe_4/ ├── index.html # Main visualization page ├── src/ │ ├── index.js # Multi-layer orchestration logic │ └── data/ │ ├── countries-data.js # 100+ countries with metrics │ └── cities-data.js # 80 tech hubs with connections ├── README.md # This documentation └── CLAUDE.md # Development context ``` ## 🎓 Key Takeaways **Multi-Layer Mastery**: - Successfully combined 4 different layer types (circle, line, symbol) - Implemented coordinated visibility and opacity controls - Created dynamic filtering across multiple data sources **Choropleth Techniques**: - Adapted fill layer concepts to circle-based visualization - Implemented smooth color interpolation for data representation - Created responsive legends that update with metric changes **Advanced Interactivity**: - Layer-specific controls with real-time feedback - Cross-layer filtering maintaining data relationships - Comprehensive popup information for both countries and cities **Design Excellence**: - Professional dark theme with glassmorphism effects - Gradient-based connection visualization - Sophisticated color schemes for multiple data dimensions --- *This iteration represents the culmination of progressive Mapbox learning, combining single-layer mastery with multi-layer composition to create a comprehensive, interactive global visualization.*