<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Utility Data Analysis Dashboard</title> <script src="https://cdn.tailwindcss.com"></script> <script src="https://cdn.jsdelivr.net/npm/chart.js"></script> <script src="https://kit.fontawesome.com/a076d05399.js" crossorigin="anonymous"></script> <style> .highlight-box { border-left: 4px solid #3b82f6; background-color: #f8fafc; transition: all 0.3s ease; } .highlight-box:hover { background-color: #eff6ff; transform: translateY(-2px); } .data-card { box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06); transition: all 0.3s ease; } .data-card:hover { box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05); } .tab-content { display: none; } .tab-content.active { display: block; } .tab-button { transition: all 0.3s ease; } .tab-button.active { border-bottom: 3px solid #3b82f6; color: #3b82f6; font-weight: 600; } </style> </head> <body class="bg-gray-50"> <div class="container mx-auto px-4 py-8"> <header class="mb-8"> <h1 class="text-3xl font-bold text-gray-800 mb-2">Utility Consumption Analysis Dashboard</h1> <p class="text-gray-600">Visual representation of utility consumption patterns with anomaly detection</p> </header> <div class="grid grid-cols-1 md:grid-cols-3 gap-6 mb-8"> <div class="data-card bg-white rounded-lg p-6"> <div class="flex items-center mb-4"> <div class="p-3 rounded-full bg-blue-100 text-blue-600 mr-4"> <i class="fas fa-tint text-xl"></i> </div> <div> <h3 class="text-gray-500 text-sm font-medium">Water Consumption</h3> <p class="text-2xl font-bold text-gray-800">Varies by property</p> </div> </div> <p class="text-gray-600 text-sm">Shows steady increase with seasonal variations</p> </div> <div class="data-card bg-white rounded-lg p-6"> <div class="flex items-center mb-4"> <div class="p-3 rounded-full bg-yellow-100 text-yellow-600 mr-4"> <i class="fas fa-bolt text-xl"></i> </div> <div> <h3 class="text-gray-500 text-sm font-medium">Electricity Usage</h3> <p class="text-2xl font-bold text-gray-800">Significant peaks</p> </div> </div> <p class="text-gray-600 text-sm">Notable spikes in winter months for heating</p> </div> <div class="data-card bg-white rounded-lg p-6"> <div class="flex items-center mb-4"> <div class="p-3 rounded-full bg-red-100 text-red-600 mr-4"> <i class="fas fa-fire text-xl"></i> </div> <div> <h3 class="text-gray-500 text-sm font-medium">Heating Costs</h3> <p class="text-2xl font-bold text-gray-800">Seasonal pattern</p> </div> </div> <p class="text-gray-600 text-sm">Highest in winter months, lowest in summer</p> </div> </div> <div class="bg-white rounded-lg shadow-md mb-8"> <div class="flex border-b"> <button class="tab-button active px-6 py-4 text-gray-700" onclick="openTab(event, 'water')">Water Usage</button> <button class="tab-button px-6 py-4 text-gray-700" onclick="openTab(event, 'electricity')">Electricity</button> <button class="tab-button px-6 py-4 text-gray-700" onclick="openTab(event, 'heating')">Heating</button> <button class="tab-button px-6 py-4 text-gray-700" onclick="openTab(event, 'anomalies')">Anomalies</button> </div> <div id="water" class="tab-content active p-6"> <h2 class="text-xl font-semibold mb-4 text-gray-800">Water Consumption Analysis</h2> <div class="grid grid-cols-1 lg:grid-cols-2 gap-6"> <div> <canvas id="waterChart"></canvas> </div> <div> <div class="highlight-box p-4 mb-4 rounded"> <h3 class="font-medium text-blue-600 mb-2"><i class="fas fa-info-circle mr-2"></i>Key Observation</h3> <p class="text-gray-700">The Páva property shows significantly lower water consumption compared to NagyLajos and Rozsnyay, suggesting either more efficient fixtures or different usage patterns.</p> </div> <div class="highlight-box p-4 rounded"> <h3 class="font-medium text-blue-600 mb-2"><i class="fas fa-chart-line mr-2"></i>Trend Analysis</h3> <p class="text-gray-700">All properties show a steady increase in water consumption over time, with Rozsnyay having the highest absolute consumption values.</p> </div> </div> </div> </div> <div id="electricity" class="tab-content p-6"> <h2 class="text-xl font-semibold mb-4 text-gray-800">Electricity Consumption Analysis</h2> <div class="grid grid-cols-1 lg:grid-cols-2 gap-6"> <div> <canvas id="electricityChart"></canvas> </div> <div> <div class="highlight-box p-4 mb-4 rounded"> <h3 class="font-medium text-blue-600 mb-2"><i class="fas fa-bolt mr-2"></i>Peak Usage</h3> <p class="text-gray-700">The Rozsnyay property shows extreme electricity consumption in 2018 (41,366 units), which appears to be a data anomaly or meter reading error.</p> </div> <div class="highlight-box p-4 rounded"> <h3 class="font-medium text-blue-600 mb-2"><i class="fas fa-calendar-alt mr-2"></i>Seasonal Pattern</h3> <p class="text-gray-700">Electricity usage tends to be higher in winter months across all properties, likely due to increased heating requirements.</p> </div> </div> </div> </div> <div id="heating" class="tab-content p-6"> <h2 class="text-xl font-semibold mb-4 text-gray-800">Heating Consumption Analysis</h2> <div class="grid grid-cols-1 lg:grid-cols-2 gap-6"> <div> <canvas id="heatingChart"></canvas> </div> <div> <div class="highlight-box p-4 mb-4 rounded"> <h3 class="font-medium text-blue-600 mb-2"><i class="fas fa-temperature-low mr-2"></i>Winter Peaks</h3> <p class="text-gray-700">Heating consumption shows clear seasonal patterns with peaks in December-February and lowest usage in June-August.</p> </div> <div class="highlight-box p-4 rounded"> <h3 class="font-medium text-blue-600 mb-2"><i class="fas fa-exclamation-triangle mr-2"></i>Notable Spikes</h3> <p class="text-gray-700">The Rozsnyay property shows unusually high heating consumption in 2016-2017, reaching up to 10,381 units, significantly higher than other properties.</p> </div> </div> </div> </div> <div id="anomalies" class="tab-content p-6"> <h2 class="text-xl font-semibold mb-4 text-gray-800">Anomaly Detection</h2> <div class="grid grid-cols-1 lg:grid-cols-2 gap-6"> <div> <canvas id="anomalyChart"></canvas> </div> <div> <div class="highlight-box p-4 mb-4 rounded"> <h3 class="font-medium text-blue-600 mb-2"><i class="fas fa-search mr-2"></i>Detected Anomalies</h3> <ul class="list-disc pl-5 text-gray-700 space-y-2"> <li>Rozsnyay May 2018: Extreme electricity reading (41,366 units)</li> <li>Páva October 2018: Negative heating value (-12,981 units)</li> <li>NagyLajos April 2012: Missing utility data for most categories</li> <li>Rozsnyay April 2018: All meters reset to 0.00</li> </ul> </div> <div class="highlight-box p-4 rounded"> <h3 class="font-medium text-blue-600 mb-2"><i class="fas fa-lightbulb mr-2"></i>Recommendations</h3> <p class="text-gray-700">Verify meter readings during anomaly periods and investigate potential data entry errors. Consider implementing automated anomaly detection for future data collection.</p> </div> </div> </div> </div> </div> <div class="bg-white rounded-lg shadow-md p-6 mb-8"> <h2 class="text-xl font-semibold mb-4 text-gray-800">Comparative Analysis by Property</h2> <div class="overflow-x-auto"> <table class="min-w-full divide-y divide-gray-200"> <thead class="bg-gray-50"> <tr> <th class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Property</th> <th class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Avg Water (M)</th> <th class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Avg Water (H)</th> <th class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Avg Electricity</th> <th class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Avg Heating</th> <th class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Notes</th> </tr> </thead> <tbody class="bg-white divide-y divide-gray-200"> <tr> <td class="px-6 py-4 whitespace-nowrap text-sm font-medium text-gray-900">NagyLajos</td> <td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">72.45</td> <td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">80.32</td> <td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">14,123</td> <td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">2,144</td> <td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">Most consistent usage</td> </tr> <tr> <td class="px-6 py-4 whitespace-nowrap text-sm font-medium text-gray-900">Rozsnyay</td> <td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">182.34</td> <td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">236.47</td> <td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">7,611</td> <td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">3,898</td> <td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">Highest water usage</td> </tr> <tr> <td class="px-6 py-4 whitespace-nowrap text-sm font-medium text-gray-900">Páva</td> <td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">159.22</td> <td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">162.45</td> <td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">44,527</td> <td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">4,100</td> <td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">Most anomalies</td> </tr> </tbody> </table> </div> </div> <div class="bg-white rounded-lg shadow-md p-6"> <h2 class="text-xl font-semibold mb-4 text-gray-800">Key Insights</h2> <div class="grid grid-cols-1 md:grid-cols-2 gap-6"> <div class="highlight-box p-6 rounded-lg"> <h3 class="text-lg font-medium text-blue-600 mb-3"><i class="fas fa-chart-pie mr-2"></i>Consumption Patterns</h3> <ul class="list-disc pl-5 text-gray-700 space-y-2"> <li>Water consumption shows the most consistent upward trend across all properties</li> <li>Electricity usage has the most variability with significant seasonal patterns</li> <li>Heating costs are predictably highest in winter months but show property-specific patterns</li> </ul> </div> <div class="highlight-box p-6 rounded-lg"> <h3 class="text-lg font-medium text-blue-600 mb-3"><i class="fas fa-exclamation-circle mr-2"></i>Data Quality Issues</h3> <ul class="list-disc pl-5 text-gray-700 space-y-2"> <li>Several instances of missing data (empty cells in original dataset)</li> <li>Extreme values that may represent meter reading errors</li> <li>Negative values in heating costs that require verification</li> <li>Meter resets (sudden drops to zero) that need investigation</li> </ul> </div> </div> </div> </div> <script> // Tab functionality function openTab(evt, tabName) { var i, tabcontent, tabbuttons; tabcontent = document.getElementsByClassName("tab-content"); for (i = 0; i < tabcontent.length; i++) { tabcontent[i].classList.remove("active"); } tabbuttons = document.getElementsByClassName("tab-button"); for (i = 0; i < tabbuttons.length; i++) { tabbuttons[i].classList.remove("active"); } document.getElementById(tabName).classList.add("active"); evt.currentTarget.classList.add("active"); } // Water Chart const waterCtx = document.getElementById('waterChart').getContext('2d'); const waterChart = new Chart(waterCtx, { type: 'line', data: { labels: ['2012', '2013', '2014', '2015', '2016', '2017', '2018', '2019', '2020', '2021', '2022', '2023', '2024'], datasets: [ { label: 'NagyLajos (M)', data: [55, 96.7, null, null, null, null, null, null, null, null, null, null, null], borderColor: '#3b82f6', backgroundColor: 'rgba(59, 130, 246, 0.1)', tension: 0.3, fill: true }, { label: 'Rozsnyay (M)', data: [null, null, null, null, 158.11, 197.19, 205.49, null, null, null, null, null, null], borderColor: '#10b981', backgroundColor: 'rgba(16, 185, 129, 0.1)', tension: 0.3, fill: true }, { label: 'Páva (M)', data: [null, null, null, null, null, null, null, 3.65, 111.92, 168.11, 214.17, 261.17, 309.29], borderColor: '#f59e0b', backgroundColor: 'rgba(245, 158, 11, 0.1)', tension: 0.3, fill: true } ] }, options: { responsive: true, plugins: { title: { display: true, text: 'Water Meter (M) Consumption Over Time', font: { size: 16 } }, tooltip: { mode: 'index', intersect: false } }, scales: { y: { beginAtZero: true, title: { display: true, text: 'Consumption (units)' } } } } }); // Electricity Chart const electricityCtx = document.getElementById('electricityChart').getContext('2d'); const electricityChart = new Chart(electricityCtx, { type: 'line', data: { labels: ['2012', '2013', '2014', '2015', '2016', '2017', '2018', '2019', '2020', '2021', '2022', '2023', '2024'], datasets: [ { label: 'NagyLajos', data: [12937, 15423, null, null, null, null, null, null, null, null, null, null, null], borderColor: '#3b82f6', backgroundColor: 'rgba(59, 130, 246, 0.1)', tension: 0.3, fill: true }, { label: 'Rozsnyay', data: [null, null, null, null, 6110, 8624, 9074, null, null, null, null, null, null], borderColor: '#10b981', backgroundColor: 'rgba(16, 185, 129, 0.1)', tension: 0.3, fill: true, pointBackgroundColor: function(context) { return context.raw > 40000 ? '#ef4444' : '#10b981'; }, pointRadius: function(context) { return context.raw > 40000 ? 7 : 3; } }, { label: 'Páva', data: [null, null, null, null, null, null, null, 41464, 44527, 45588, 47217, 48567, 50302], borderColor: '#f59e0b', backgroundColor: 'rgba(245, 158, 11, 0.1)', tension: 0.3, fill: true } ] }, options: { responsive: true, plugins: { title: { display: true, text: 'Electricity Consumption Over Time', font: { size: 16 } }, tooltip: { mode: 'index', intersect: false }, annotation: { annotations: { anomaly: { type: 'box', xMin: '2018', xMax: '2018', yMin: 0, yMax: 45000, backgroundColor: 'rgba(239, 68, 68, 0.1)', borderColor: 'rgba(239, 68, 68, 0.5)', borderWidth: 1, label: { content: 'Anomaly', enabled: true, position: 'top' } } } } }, scales: { y: { beginAtZero: true, title: { display: true, text: 'Consumption (units)' } } } } }); // Heating Chart const heatingCtx = document.getElementById('heatingChart').getContext('2d'); const heatingChart = new Chart(heatingCtx, { type: 'bar', data: { labels: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], datasets: [ { label: 'NagyLajos (2013)', data: [2009, 2276, 2357, 2440, 2454, 2454, 2454, 2454, 2454, 2454, 2454, 2508], backgroundColor: 'rgba(59, 130, 246, 0.7)' }, { label: 'Rozsnyay (2017)', data: [9839, 10204, 10307, 10307, 10307, 10307, 10307, 10307, 10307, 10307, 10307, 10337], backgroundColor: 'rgba(16, 185, 129, 0.7)' }, { label: 'Páva (2023)', data: [437.939, 438.538, 439.38, 439.741, 439.741, 439.741, 439.741, 439.741, 439.741, 439.741, 439.741, 440.181], backgroundColor: 'rgba(245, 158, 11, 0.7)' } ] }, options: { responsive: true, plugins: { title: { display: true, text: 'Monthly Heating Consumption Comparison', font: { size: 16 } }, tooltip: { mode: 'index', intersect: false } }, scales: { y: { beginAtZero: true, title: { display: true, text: 'Consumption (units)' } } } } }); // Anomaly Chart const anomalyCtx = document.getElementById('anomalyChart').getContext('2d'); const anomalyChart = new Chart(anomalyCtx, { type: 'scatter', data: { datasets: [ { label: 'Normal Readings', data: [ {x: 2012, y: 12937}, {x: 2012, y: 13050}, {x: 2013, y: 14496}, {x: 2016, y: 6343}, {x: 2017, y: 7213}, {x: 2020, y: 44227}, {x: 2021, y: 45246}, {x: 2022, y: 47217} ], backgroundColor: '#3b82f6' }, { label: 'Anomalies', data: [ {x: 2018, y: 41366}, {x: 2018, y: 0}, {x: 2018, y: 0}, {x: 2018, y: 0}, {x: 2018, y: 0}, {x: 2018, y: 0} ], backgroundColor: '#ef4444', pointRadius: 8 } ] }, options: { responsive: true, plugins: { title: { display: true, text: 'Electricity Consumption Anomalies', font: { size: 16 } }, tooltip: { callbacks: { label: function(context) { let label = context.dataset.label || ''; if (label) { label += ': '; } if (context.parsed.y !== null) { label += context.parsed.y.toLocaleString() + ' units'; } return label; } } } }, scales: { y: { title: { display: true, text: 'Consumption (units)' } }, x: { title: { display: true, text: 'Year' } } } } }); </script> <p style="border-radius: 8px; text-align: center; font-size: 12px; color: #fff; margin-top: 16px;position: fixed; left: 8px; bottom: 8px; z-index: 10; background: rgba(0, 0, 0, 0.8); padding: 4px 8px;">Made with <img src="https://enzostvs-deepsite.hf.space/logo.svg" alt="DeepSite Logo" style="width: 16px; height: 16px; vertical-align: middle;display:inline-block;margin-right:3px;filter:brightness(0) invert(1);"><a href="https://enzostvs-deepsite.hf.space" style="color: #fff;text-decoration: underline;" target="_blank" >DeepSite</a> - 🧬 <a href="https://enzostvs-deepsite.hf.space?remix=Notmebug/wfwe" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body> </html>