Spaces:
Running
Running
<html lang="en"> | |
<head> | |
<meta charset="UTF-8"> | |
<meta name="viewport" content="width=device-width, initial-scale=1.0"> | |
<title>ComicLab - Advanced Research Dashboard</title> | |
<script src="https://cdn.tailwindcss.com"></script> | |
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script> | |
<script> | |
tailwind.config = { | |
theme: { | |
extend: { | |
fontFamily: { | |
mono: ['IBM Plex Mono', 'monospace'], | |
}, | |
colors: { | |
lab: { | |
dark: '#121212', | |
panel: '#1e1e1e', | |
border: '#333333', | |
accent: '#00ff88', | |
highlight: '#0088ff', | |
warning: '#ff6600', | |
danger: '#ff0033', | |
teal: '#00f5d4', | |
purple: '#9b5de5' | |
} | |
} | |
} | |
} | |
} | |
</script> | |
<style> | |
body { | |
background-color: #121212; | |
color: #e0e0e0; | |
font-family: 'IBM Plex Mono', monospace; | |
} | |
.data-panel { | |
border: 1px solid #333; | |
background-color: #1e1e1e; | |
} | |
.data-header { | |
border-bottom: 1px solid #333; | |
background-color: #1a1a1a; | |
} | |
.data-table { | |
font-size: 0.875rem; | |
} | |
.data-table th { | |
font-weight: 600; | |
text-transform: uppercase; | |
font-size: 0.75rem; | |
letter-spacing: 0.05em; | |
} | |
.data-table td, .data-table th { | |
padding: 0.5rem 1rem; | |
border-bottom: 1px solid #333333; | |
} | |
.data-value { | |
font-family: 'IBM Plex Mono', monospace; | |
font-weight: 600; | |
} | |
.positive-trend { | |
color: #00ff88; | |
} | |
.negative-trend { | |
color: #ff0033; | |
} | |
.neutral-trend { | |
color: #0088ff; | |
} | |
.status-indicator { | |
width: 10px; | |
height: 10px; | |
border-radius: 50%; | |
display: inline-block; | |
margin-right: 6px; | |
} | |
.trend-icon { | |
margin-right: 4px; | |
} | |
.section-divider { | |
border: none; | |
border-top: 1px solid #333; | |
margin: 1.5rem 0; | |
} | |
.metric-card { | |
background-color: #252525; | |
border-left: 4px solid; | |
padding: 0.75rem 1rem; | |
} | |
.metric-title { | |
font-size: 0.75rem; | |
text-transform: uppercase; | |
letter-spacing: 0.05em; | |
opacity: 0.7; | |
} | |
.metric-value { | |
font-size: 1.5rem; | |
line-height: 1; | |
margin: 0.25rem 0 0.5rem; | |
} | |
.chart-container { | |
position: relative; | |
height: 250px; | |
width: 100%; | |
} | |
.progress-bar { | |
height: 4px; | |
background-color: #333; | |
border-radius: 2px; | |
overflow: hidden; | |
} | |
.progress-value { | |
height: 100%; | |
} | |
.grid-point { | |
width: 8px; | |
height: 8px; | |
border-radius: 50%; | |
display: inline-block; | |
margin-right: 6px; | |
} | |
.kpi-badge { | |
font-size: 0.7rem; | |
padding: 2px 6px; | |
border-radius: 10px; | |
display: inline-flex; | |
align-items: center; | |
} | |
</style> | |
</head> | |
<body class="bg-lab-dark text-gray-300 font-mono"> | |
<header class="border-b border-lab-border bg-lab-dark sticky top-0 z-10"> | |
<div class="container mx-auto px-4 py-3"> | |
<div class="flex items-center justify-between"> | |
<div class="flex items-center space-x-2"> | |
<span class="text-lab-accent font-bold text-xl">COMIC</span> | |
<span class="text-lab-highlight font-bold text-xl">RESEARCH</span> | |
<span class="text-xs px-2 py-1 bg-lab-panel rounded">v3.1.0</span> | |
</div> | |
<div class="text-xs text-gray-400"> | |
<span class="mr-4">Last updated: <span class="text-gray-100">2023-11-16 09:42:18 UTC</span></span> | |
<span>Data source: <span class="text-gray-100">research_api/v3</span></span> | |
</div> | |
</div> | |
</div> | |
</header> | |
<main class="container mx-auto px-4 py-6"> | |
<!-- Executive Analysis --> | |
<section class="mb-8"> | |
<div class="grid grid-cols-1 md:grid-cols-2 gap-6 mb-6"> | |
<!-- Market Growth Chart --> | |
<div class="data-panel rounded-lg p-4"> | |
<div class="flex justify-between items-center mb-3"> | |
<h3 class="font-semibold">MARKET GROWTH PROJECTIONS</h3> | |
<span class="text-xs bg-lab-panel px-2 py-1 rounded">by genre</span> | |
</div> | |
<div class="chart-container"> | |
<canvas id="marketGrowthChart"></canvas> | |
</div> | |
<div class="mt-3 text-xs grid grid-cols-4 gap-2"> | |
<div class="flex items-center"><span class="grid-point bg-[#00ff88]"></span> Action</div> | |
<div class="flex items-center"><span class="grid-point bg-[#0088ff]"></span> Fantasy</div> | |
<div class="flex items-center"><span class="grid-point bg-[#9b5de5]"></span> Romance</div> | |
<div class="flex items-center"><span class="grid-point bg-[#ff6600]"></span> Horror</div> | |
</div> | |
</div> | |
<!-- Demographic Breakdown --> | |
<div class="data-panel rounded-lg p-4"> | |
<div class="flex justify-between items-center mb-3"> | |
<h3 class="font-semibold">READER DEMOGRAPHICS</h3> | |
<span class="text-xs bg-lab-panel px-2 py-1 rounded">latest survey</span> | |
</div> | |
<div class="chart-container"> | |
<canvas id="demographicChart"></canvas> | |
</div> | |
<div class="grid grid-cols-3 gap-2 mt-2 text-xs text-center"> | |
<div> | |
<div class="font-bold">Gender</div> | |
<div>Male: 48%</div> | |
<div>Female: 49%</div> | |
<div>Other: 3%</div> | |
</div> | |
<div> | |
<div class="font-bold">Age Groups</div> | |
<div>13-17: 22%</div> | |
<div>18-24: 41%</div> | |
<div>25-34: 28%</div> | |
</div> | |
<div> | |
<div class="font-bold">Engagement</div> | |
<div>Daily: 34%</div> | |
<div>Weekly: 52%</div> | |
<div>Monthly: 14%</div> | |
</div> | |
</div> | |
</div> | |
</div> | |
<div class="grid grid-cols-1 md:grid-cols-4 gap-4 mb-6"> | |
<!-- Key Performance Indicators --> | |
<div class="data-panel rounded-lg p-3"> | |
<div class="text-xs mb-2">MARKET SHARE GROWTH</div> | |
<div class="flex justify-between items-end mb-1"> | |
<span class="text-xl data-value">17.2%</span> | |
<span class="text-xs positive-trend">+3.4% YoY</span> | |
</div> | |
<div class="progress-bar"> | |
<div class="progress-value bg-lab-accent" style="width: 70%"></div> | |
</div> | |
<div class="text-xs mt-1 flex justify-between"> | |
<span>2022: 13.8%</span> | |
<span>Forecast: 21%</span> | |
</div> | |
</div> | |
<div class="data-panel rounded-lg p-3"> | |
<div class="text-xs mb-2">AVG. REVENUE/USER</div> | |
<div class="flex justify-between items-end mb-1"> | |
<span class="text-xl data-value">$3.42</span> | |
<span class="text-xs positive-trend">+11.1% YoY</span> | |
</div> | |
<div class="progress-bar"> | |
<div class="progress-value bg-lab-highlight" style="width: 65%"></div> | |
</div> | |
<div class="text-xs mt-1 flex justify-between"> | |
<span>2022: $2.89</span> | |
<span>Forecast: $4.15</span> | |
</div> | |
</div> | |
<div class="data-panel rounded-lg p-3"> | |
<div class="text-xs mb-2">CONTENT RETENTION</div> | |
<div class="flex justify-between items-end mb-1"> | |
<span class="text-xl data-value">87%</span> | |
<span class="text-xs positive-trend">+2.8% YoY</span> | |
</div> | |
<div class="progress-bar"> | |
<div class="progress-value bg-lab-teal" style="width: 87%"></div> | |
</div> | |
<div class="text-xs mt-1 flex justify-between"> | |
<span>2022: 84.2%</span> | |
<span>Forecast: 89%</span> | |
</div> | |
</div> | |
<div class="data-panel rounded-lg p-3"> | |
<div class="text-xs mb-2">NEW READER ACQUISITION</div> | |
<div class="flex justify-between items-end mb-1"> | |
<span class="text-xl data-value">28.4K</span> | |
<span class="text-xs negative-trend">-4.2% YoY</span> | |
</div> | |
<div class="progress-bar"> | |
<div class="progress-value bg-lab-warning" style="width: 45%"></div> | |
</div> | |
<div class="text-xs mt-1 flex justify-between"> | |
<span>2022: 29.7K</span> | |
<span>Forecast: 25K</span> | |
</div> | |
</div> | |
</div> | |
</section> | |
<hr class="section-divider"> | |
<!-- Deep Demographic Analysis --> | |
<section class="mb-8"> | |
<h2 class="text-xl font-semibold mb-4">DEMOGRAPHIC DEEP DIVE</h2> | |
<div class="grid grid-cols-1 md:grid-cols-3 gap-4 mb-6"> | |
<!-- Age Distribution by Genre --> | |
<div class="data-panel rounded-lg p-4"> | |
<div class="mb-4"> | |
<h3 class="font-semibold">AGE DISTRIBUTION BY GENRE</h3> | |
<div class="text-xs text-gray-400 mt-1">Average reader age with engagement</div> | |
</div> | |
<div class="chart-container"> | |
<canvas id="ageGenreChart"></canvas> | |
</div> | |
<div class="text-xs mt-3 grid grid-cols-2 gap-1"> | |
<div><span class="text-lab-highlight">Action:</span> Avg. age 21.4 | Peak 18-24</div> | |
<div><span class="text-lab-teal">Fantasy:</span> Avg. age 22.7 | Peak 18-24</div> | |
<div><span class="text-lab-purple">Romance:</span> Avg. age 24.2 | Peak 18-30</div> | |
<div><span class="text-lab-warning">Horror:</span> Avg. age 25.1 | Peak 22-30</div> | |
</div> | |
</div> | |
<!-- Gender Preferences --> | |
<div class="data-panel rounded-lg p-4"> | |
<div class="mb-4"> | |
<h3 class="font-semibold">GENDER PREFERENCES</h3> | |
<div class="text-xs text-gray-400 mt-1">Content consumption by gender</div> | |
</div> | |
<div class="chart-container"> | |
<canvas id="genderPreferenceChart"></canvas> | |
</div> | |
<div class="text-xs mt-3"> | |
<div> | |
<span class="text-lab-highlight">Male:</span> 72% Action, 14% Fantasy, 8% Sci-Fi, 6% Others | |
</div> | |
<div> | |
<span class="text-lab-purple">Female:</span> 58% Romance, 22% Fantasy, 12% Drama, 8% Others | |
</div> | |
</div> | |
</div> | |
<!-- Geographic Heatmap Preview --> | |
<div class="data-panel rounded-lg p-4"> | |
<div class="mb-4"> | |
<h3 class="font-semibold">GEOGRAPHIC CONCENTRATION</h3> | |
<div class="text-xs text-gray-400 mt-1">Top regions by readership</div> | |
</div> | |
<table class="w-full text-xs"> | |
<thead> | |
<tr> | |
<th class="text-left">Region</th> | |
<th class="text-right">Readers</th> | |
<th class="text-right">Growth</th> | |
</tr> | |
</thead> | |
<tbody> | |
<tr> | |
<td class="text-left">East Asia</td> | |
<td class="text-right data-value">421,892</td> | |
<td class="text-right positive-trend">+8.7%</td> | |
</tr> | |
<tr> | |
<td class="text-left">Southeast Asia</td> | |
<td class="text-right data-value">387,562</td> | |
<td class="text-right positive-trend">+12.4%</td> | |
</tr> | |
<tr> | |
<td class="text-left">North America</td> | |
<td class="text-right data-value">234,789</td> | |
<td class="text-right positive-trend">+5.3%</td> | |
</tr> | |
<tr> | |
<td class="text-left">Europe</td> | |
<td class="text-right data-value">187,654</td> | |
<td class="text-right neutral-trend">+1.8%</td> | |
</tr> | |
</tbody> | |
</table> | |
<div class="text-xs mt-2 text-amber-300"> | |
Emerging markets: South America (+17.2%), Middle East (+9.8%) | |
</div> | |
</div> | |
</div> | |
<!-- Behavioral Segmentation --> | |
<div class="data-panel rounded-lg mb-6 p-4"> | |
<div class="flex justify-between items-center mb-4"> | |
<h3 class="font-semibold">READER BEHAVIOR SEGMENTATION</h3> | |
<div class="text-xs bg-lab-panel px-2 py-1 rounded">cluster analysis</div> | |
</div> | |
<div class="grid grid-cols-1 md:grid-cols-4 gap-3"> | |
<div class="p-3 bg-[#003153] rounded"> | |
<div class="text-xs mb-1 font-bold">Power Readers (18%)</div> | |
<div class="text-xs mb-1">Daily readers, high spend</div> | |
<div class="flex flex-wrap gap-1"> | |
<span class="kpi-badge bg-blue-900">LTV: $128</span> | |
<span class="kpi-badge bg-green-900">Engage: 94%</span> | |
</div> | |
</div> | |
<div class="p-3 bg-[#1a1a2e] rounded"> | |
<div class="text-xs mb-1 font-bold">Casual Enjoyers (42%)</div> | |
<div class="text-xs mb-1">2-3x weekly, medium spend</div> | |
<div class="flex flex-wrap gap-1"> | |
<span class="kpi-badge bg-blue-900">LTV: $64</span> | |
<span class="kpi-badge bg-green-900">Engage: 82%</span> | |
</div> | |
</div> | |
<div class="p-3 bg-[#3a0a2e] rounded"> | |
<div class="text-xs mb-1 font-bold">Series Followers (28%)</div> | |
<div class="text-xs mb-1">Weekly, only favorite titles</div> | |
<div class="flex flex-wrap gap-1"> | |
<span class="kpi-badge bg-blue-900">LTV: $43</span> | |
<span class="kpi-badge bg-green-900">Engage: 78%</span> | |
</div> | |
</div> | |
<div class="p-3 bg-[#4a0100] rounded"> | |
<div class="text-xs mb-1 font-bold">Drop-off Risks (12%)</div> | |
<div class="text-xs mb-1">Declining engagement</div> | |
<div class="flex flex-wrap gap-1"> | |
<span class="kpi-badge bg-blue-900">LTV: $12</span> | |
<span class="kpi-badge bg-red-900">Engage: 34%</span> | |
</div> | |
</div> | |
</div> | |
</div> | |
</section> | |
<hr class="section-divider"> | |
<!-- Predictive Analytics --> | |
<section class="mb-8"> | |
<h2 class="text-xl font-semibold mb-4 flex items-center"> | |
<span class="status-indicator bg-lab-purple"></span> | |
<span>PREDICTIVE ANALYTICS</span> | |
</h2> | |
<div class="grid grid-cols-1 md:grid-cols-2 gap-6 mb-6"> | |
<!-- Content Trend Forecast --> | |
<div class="data-panel rounded-lg p-4"> | |
<div class="mb-3"> | |
<h3 class="font-semibold">CONTENT TREND PROJECTIONS</h3> | |
<div class="text-xs text-gray-400">6-month forecast based on current patterns</div> | |
</div> | |
<div class="chart-container"> | |
<canvas id="trendForecastChart"></canvas> | |
</div> | |
<div class="text-xs mt-3 grid grid-cols-2 gap-1"> | |
<div><span class="text-lab-accent">Rising:</span> Isekai (+14%), Slice-of-Life (+9%)</div> | |
<div><span class="text-lab-warning">Declining:</span> Traditional Fantasy (-7%), Vampire (-12%)</div> | |
</div> | |
</div> | |
<!-- Revenue Prediction --> | |
<div class="data-panel rounded-lg p-4"> | |
<div class="mb-3"> | |
<h3 class="font-semibold">REVENUE FORECAST MODEL</h3> | |
<div class="text-xs text-gray-400">Quarterly projections with confidence intervals</div> | |
</div> | |
<div class="chart-container"> | |
<canvas id="revenueForecastChart"></canvas> | |
</div> | |
<div class="text-xs mt-3"> | |
<div class="grid grid-cols-3 gap-2"> | |
<div> | |
<div>Q1 2024</div> | |
<div class="data-value">$2.4M</div> | |
</div> | |
<div> | |
<div>Q2 2024</div> | |
<div class="data-value">$2.7M</div> | |
</div> | |
<div> | |
<div>Q3 2024</div> | |
<div class="data-value">$2.9M</div> | |
</div> | |
</div> | |
</div> | |
</div> | |
</div> | |
<!-- Churn Prediction --> | |
<div class="data-panel rounded-lg p-4"> | |
<div class="flex justify-between items-center mb-3"> | |
<h3 class="font-semibold">CHURN RISK ANALYSIS</h3> | |
<span class="text-xs bg-lab-panel px-2 py-1 rounded">machine learning model</span> | |
</div> | |
<div class="grid grid-cols-1 md:grid-cols-4 gap-3"> | |
<div class="p-3"> | |
<div class="text-xs mb-1">Overall Churn Probability</div> | |
<div class="text-2xl data-value">3.8%</div> | |
<div class="text-xs"><span class="neutral-trend">→</span> Stable (no significant change)</div> | |
</div> | |
<div class="p-3"> | |
<div class="text-xs mb-1">At-Risk Titles</div> | |
<div class="text-2xl data-value">87</div> | |
<div class="text-xs"><span class="positive-trend">↘</span> 12 less than last month</div> | |
</div> | |
<div class="p-3"> | |
<div class="text-xs mb-1">High-Risk Segments</div> | |
<div class="text-2xl data-value">3</div> | |
<div class="text-xs"> | |
<span class="negative-trend">Vampire (27%)</span>, | |
<span class="negative-trend">Western (19%)</span> | |
</div> | |
</div> | |
<div class="p-3"> | |
<div class="text-xs mb-1">Intervention Success Rate</div> | |
<div class="text-2xl data-value positive-trend">68%</div> | |
<div class="text-xs">(+9% from Q2)</div> | |
</div> | |
</div> | |
</div> | |
</section> | |
<hr class="section-divider"> | |
<!-- Genre Performance Detail --> | |
<section class="mb-8"> | |
<h2 class="text-xl font-semibold mb-4">GENRE PERFORMANCE MATRIX</h2> | |
<div class="overflow-x-auto"> | |
<table class="w-full data-table"> | |
<thead> | |
<tr> | |
<th class="text-left">Genre</th> | |
<th class="text-right">Market Share</th> | |
<th class="text-right">Reader Growth</th> | |
<th class="text-right">Revenue/Reader</th> | |
<th class="text-right">Age Skew</th> | |
<th class="text-right">Gender Ratio</th> | |
<th class="text-right">Series Length</th> | |
<th class="text-right">Health Index</th> | |
</tr> | |
</thead> | |
<tbody> | |
<tr> | |
<td class="text-left font-semibold">Action (Shounen)</td> | |
<td class="text-right data-value">34.2%</td> | |
<td class="text-right positive-trend">+8.7%</td> | |
<td class="text-right">$2.87</td> | |
<td class="text-right">21.4</td> | |
<td class="text-right">68/32</td> | |
<td class="text-right">72.4</td> | |
<td class="text-right positive-trend">89/100</td> | |
</tr> | |
<tr> | |
<td class="text-left font-semibold">Fantasy (Isekai)</td> | |
<td class="text-right data-value">27.8%</td> | |
<td class="text-right positive-trend">+14.2%</td> | |
<td class="text-right">$3.12</td> | |
<td class="text-right">22.1</td> | |
<td class="text-right">59/41</td> | |
<td class="text-right">45.7</td> | |
<td class="text-right positive-trend">92/100</td> | |
</tr> | |
<tr> | |
<td class="text-left font-semibold">Romance</td> | |
<td class="text-right data-value">15.3%</td> | |
<td class="text-right neutral-trend">+2.1%</td> | |
<td class="text-right">$4.21</td> | |
<td class="text-right">24.2</td> | |
<td class="text-right">22/78</td> | |
<td class="text-right">28.5</td> | |
<td class="text-right">75/100</td> | |
</tr> | |
<tr> | |
<td class="text-left font-semibold">Horror</td> | |
<td class="text-right data-value">7.8%</td> | |
<td class="text-right negative-trend">-3.4%</td> | |
<td class="text-right">$2.45</td> | |
<td class="text-right">25.1</td> | |
<td class="text-right">54/46</td> | |
<td class="text-right">34.2</td> | |
<td class="text-right negative-trend">61/100</td> | |
</tr> | |
<tr> | |
<td class="text-left font-semibold">Sports</td> | |
<td class="text-right data-value">6.2%</td> | |
<td class="text-right neutral-trend">+0.7%</td> | |
<td class="text-right">$1.98</td> | |
<td class="text-right">23.8</td> | |
<td class="text-right">82/18</td> | |
<td class="text-right">62.4</td> | |
<td class="text-right">68/100</td> | |
</tr> | |
</tbody> | |
</table> | |
</div> | |
</section> | |
</main> | |
<footer class="border-t border-lab-border py-4 mt-8 bg-lab-panel"> | |
<div class="container mx-auto px-4"> | |
<div class="flex flex-col md:flex-row justify-between items-center text-xs text-gray-400"> | |
<div class="mb-2 md:mb-0"> | |
<span class="mr-4">COMICLAB RESEARCH v3.1.0</span> | |
<span>ANALYTICS ENGINE v2.0.1</span> | |
</div> | |
<div> | |
<span class="mr-4">Last scan: 2023-11-16T09:42:18Z</span> | |
<span>Next model refresh: 2023-11-17T03:00:00Z</span> | |
</div> | |
</div> | |
<div class="mt-2 text-xxs text-gray-500 text-center"> | |
Predictive models have 87-92% accuracy on historical data | Confidence intervals at 95% | |
</div> | |
</div> | |
</footer> | |
<script> | |
// Market Growth Chart | |
const marketGrowthCtx = document.getElementById('marketGrowthChart').getContext('2d'); | |
const marketGrowthChart = new Chart(marketGrowthCtx, { | |
type: 'line', | |
data: { | |
labels: ['2021', '2022', '2023', '2024F', '2025F', '2026F'], | |
datasets: [ | |
{ | |
label: 'Action', | |
data: [120, 145, 180, 215, 250, 290], | |
borderColor: '#00ff88', | |
backgroundColor: 'rgba(0, 255, 136, 0.1)', | |
tension: 0.3, | |
borderWidth: 2 | |
}, | |
{ | |
label: 'Fantasy', | |
data: [100, 130, 165, 200, 240, 280], | |
borderColor: '#0088ff', | |
backgroundColor: 'rgba(0, 136, 255, 0.1)', | |
tension: 0.3, | |
borderWidth: 2 | |
}, | |
{ | |
label: 'Romance', | |
data: [80, 95, 110, 125, 140, 155], | |
borderColor: '#9b5de5', | |
backgroundColor: 'rgba(155, 93, 229, 0.1)', | |
tension: 0.3, | |
borderWidth: 2 | |
}, | |
{ | |
label: 'Horror', | |
data: [65, 70, 72, 68, 65, 62], | |
borderColor: '#ff6600', | |
backgroundColor: 'rgba(255, 102, 0, 0.1)', | |
tension: 0.3, | |
borderWidth: 2 | |
} | |
] | |
}, | |
options: { | |
responsive: true, | |
maintainAspectRatio: false, | |
plugins: { | |
legend: { | |
display: false | |
}, | |
tooltip: { | |
mode: 'index', | |
intersect: false, | |
callbacks: { | |
label: function(context) { | |
return context.dataset.label + ': ' + context.raw + 'M'; | |
} | |
} | |
} | |
}, | |
scales: { | |
y: { | |
beginAtZero: true, | |
grid: { | |
color: 'rgba(51, 51, 51, 0.5)' | |
}, | |
ticks: { | |
callback: function(value) { | |
return value + 'M'; | |
} | |
} | |
}, | |
x: { | |
grid: { | |
display: false | |
} | |
} | |
} | |
} | |
}); | |
// Demographic Chart | |
const demographicCtx = document.getElementById('demographicChart').getContext('2d'); | |
const demographicChart = new Chart(demographicCtx, { | |
type: 'doughnut', | |
data: { | |
labels: ['Age 13-17', 'Age 18-24', 'Age 25-34', 'Age 35+'], | |
datasets: [{ | |
data: [22, 41, 28, 9], | |
backgroundColor: [ | |
'#00f5d4', | |
'#0088ff', | |
'#9b5de5', | |
'#ff006e' | |
], | |
borderWidth: 0 | |
}] | |
}, | |
options: { | |
responsive: true, | |
maintainAspectRatio: false, | |
cutout: '70%', | |
plugins: { | |
legend: { | |
display: false | |
} | |
} | |
} | |
}); | |
// Age by Genre Chart | |
const ageGenreCtx = document.getElementById('ageGenreChart').getContext('2d'); | |
const ageGenreChart = new Chart(ageGenreCtx, { | |
type: 'bar', | |
data: { | |
labels: ['13-17', '18-20', '21-24', '25-30', '31-40', '41+'], | |
datasets: [ | |
{ | |
label: 'Action', | |
data: [18, 25, 32, 15, 7, 3], | |
backgroundColor: 'rgba(0, 136, 255, 0.7)' | |
}, | |
{ | |
label: 'Fantasy', | |
data: [15, 22, 35, 18, 8, 2], | |
backgroundColor: 'rgba(0, 245, 212, 0.7)' | |
}, | |
{ | |
label: 'Romance', | |
data: [12, 18, 25, 30, 12, 3], | |
backgroundColor: 'rgba(155, 93, 229, 0.7)' | |
}, | |
{ | |
label: 'Horror', | |
data: [8, 15, 28, 35, 12, 2], | |
backgroundColor: 'rgba(255, 102, 0, 0.7)' | |
} | |
] | |
}, | |
options: { | |
responsive: true, | |
maintainAspectRatio: false, | |
plugins: { | |
legend: { | |
display: false | |
} | |
}, | |
scales: { | |
x: { | |
stacked: false, | |
grid: { | |
display: false | |
} | |
}, | |
y: { | |
stacked: false, | |
grid: { | |
color: 'rgba(51, 51, 51, 0.5)' | |
}, | |
ticks: { | |
callback: function(value) { | |
return value + '%'; | |
} | |
} | |
} | |
} | |
} | |
}); | |
// Gender Preference Chart | |
const genderPreferenceCtx = document.getElementById('genderPreferenceChart').getContext('2d'); | |
const genderPreferenceChart = new Chart(genderPreferenceCtx, { | |
type: 'radar', | |
data: { | |
labels: ['Action', 'Fantasy', 'Romance', 'Horror', 'Sci-Fi', 'Sports', 'Comedy', 'Drama'], | |
datasets: [ | |
{ | |
label: 'Male Readers', | |
data: [72, 14, 5, 8, 12, 15, 18, 6], | |
backgroundColor: 'rgba(0, 136, 255, 0.2)', | |
borderColor: '#0088ff', | |
borderWidth: 2 | |
}, | |
{ | |
label: 'Female Readers', | |
data: [18, 22, 58, 12, 8, 3, 15, 12], | |
backgroundColor: 'rgba(155, 93, 229, 0.2)', | |
borderColor: '#9b5de5', | |
borderWidth: 2 | |
} | |
] | |
}, | |
options: { | |
responsive: true, | |
maintainAspectRatio: false, | |
plugins: { | |
legend: { | |
display: false | |
} | |
}, | |
scales: { | |
r: { | |
angleLines: { | |
color: 'rgba(51, 51, 51, 0.5)' | |
}, | |
grid: { | |
color: 'rgba(51, 51, 51, 0.5)' | |
}, | |
suggestedMin: 0, | |
suggestedMax: 80 | |
} | |
} | |
} | |
}); | |
// Trend Forecast Chart | |
const trendForecastCtx = document.getElementById('trendForecastChart').getContext('2d'); | |
const trendForecastChart = new Chart(trendForecastCtx, { | |
type: 'line', | |
data: { | |
labels: ['Current', '+1M', '+2M', '+3M', '+4M', '+5M', '+6M'], | |
datasets: [ | |
{ | |
label: 'Isekai', | |
data: [100, 108, 116, 124, 131, 139, 147], | |
borderColor: '#00ff88', | |
backgroundColor: 'rgba(0, 255, 136, 0.1)', | |
tension: 0.4, | |
borderWidth: 2 | |
}, | |
{ | |
label: 'Sports', | |
data: [100, 102, 103, 104, 103, 102, 101], | |
borderColor: '#0088ff', | |
backgroundColor: 'rgba(0, 136, 255, 0.1)', | |
tension: 0.4, | |
borderWidth: 2 | |
}, | |
{ | |
label: 'Traditional Fantasy', | |
data: [100, 97, 94, 91, 87, 84, 81], | |
borderColor: '#ff6600', | |
backgroundColor: 'rgba(255, 102, 0, 0.1)', | |
tension: 0.4, | |
borderWidth: 2 | |
}, | |
{ | |
label: 'Slice-of-Life', | |
data: [100, 103, 107, 110, 113, 117, 120], | |
borderColor: '#9b5de5', | |
backgroundColor: 'rgba(155, 93, 229, 0.1)', | |
tension: 0.4, | |
borderWidth: 2 | |
} | |
] | |
}, | |
options: { | |
responsive: true, | |
maintainAspectRatio: false, | |
plugins: { | |
legend: { | |
display: false | |
}, | |
tooltip: { | |
callbacks: { | |
label: function(context) { | |
return context.dataset.label + ': ' + (context.raw - 100) + '% change'; | |
} | |
} | |
} | |
}, | |
scales: { | |
y: { | |
beginAtZero: false, | |
min: 80, | |
grid: { | |
color: 'rgba(51, 51, 51, 0.5)' | |
}, | |
ticks: { | |
callback: function(value) { | |
return (value - 100) + '%'; | |
} | |
} | |
}, | |
x: { | |
grid: { | |
display: false | |
} | |
} | |
} | |
} | |
}); | |
// Revenue Forecast Chart | |
const revenueForecastCtx = document.getElementById('revenueForecastChart').getContext('2d'); | |
const revenueForecastChart = new Chart(revenueForecastCtx, { | |
type: 'bar', | |
data: { | |
labels: ['Q4 2023', 'Q1 2024', 'Q2 2024', 'Q3 2024', 'Q4 2024'], | |
datasets: [{ | |
label: 'Revenue', | |
data: [2200, 2400, 2700, 2900, 3200], | |
backgroundColor: [ | |
'rgba(0, 136, 255, 0.8)', | |
'rgba(0, 136, 255, 0.8)', | |
'rgba(0, 245, 212, 0.8)', | |
'rgba(0, 245, 212, 0.8)', | |
'rgba(0, 255, 136, 0.8)' | |
], | |
borderWidth: 0 | |
}] | |
}, | |
options: { | |
responsive: true, | |
maintainAspectRatio: false, | |
plugins: { | |
legend: { | |
display: false | |
}, | |
tooltip: { | |
callbacks: { | |
label: function(context) { | |
return '$' + context.raw + 'K'; | |
} | |
} | |
} | |
}, | |
scales: { | |
y: { | |
beginAtZero: true, | |
grid: { | |
color: 'rgba(51, 51, 51, 0.5)' | |
}, | |
ticks: { | |
callback: function(value) { | |
return '$' + value + 'K'; | |
} | |
} | |
}, | |
x: { | |
grid: { | |
display: false | |
} | |
} | |
} | |
} | |
}); | |
</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=nmtalhp/comic-datat" style="color: #fff;text-decoration: underline;" target="_blank" >🧬 Remix</a></p></body> | |
</html> |