final_report__20250826_192346.html
32.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>智能舆情分析报告</title>
</head>
<body>
json
{
"html_content": "<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>武汉大学公共热点事件分析报告</title>
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
<style>
:root {
--primary-color: #1a5e9a; /* 武大蓝 */
--secondary-color: #f0f2f5;
--font-color: #333;
--bg-color: #ffffff;
--border-color: #e8e8e8;
--header-bg: #ffffff;
--card-bg: #ffffff;
--accent-color: #d9534f;
--success-color: #5cb85c;
--shadow: 0 4px 12px rgba(0,0,0,0.08);
--border-radius: 8px;
}
.dark-mode {
--primary-color: #58a6ff;
--secondary-color: #161b22;
--font-color: #c9d1d9;
--bg-color: #0d1117;
--border-color: #30363d;
--header-bg: #161b22;
--card-bg: #161b22;
--accent-color: #f85149;
--success-color: #3fb950;
--shadow: 0 4px 12px rgba(0,0,0,0.2);
}
@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+SC:wght@300;400;500;700&display=swap');
body {
font-family: 'Noto Sans SC', sans-serif;
background-color: var(--bg-color);
color: var(--font-color);
line-height: 1.8;
margin: 0;
transition: background-color 0.3s, color 0.3s;
font-size: 16px;
}
.container {
max-width: 1200px;
margin: 0 auto;
padding: 20px;
}
header {
background-color: var(--header-bg);
border-bottom: 1px solid var(--border-color);
padding: 20px;
display: flex;
justify-content: space-between;
align-items: center;
position: sticky;
top: 0;
z-index: 1000;
transition: background-color 0.3s, border-color 0.3s;
}
header h1 {
color: var(--primary-color);
margin: 0;
font-size: 1.8em;
}
.controls {
display: flex;
align-items: center;
gap: 15px;
}
.control-btn {
background-color: var(--primary-color);
color: white;
border: none;
padding: 8px 15px;
border-radius: var(--border-radius);
cursor: pointer;
font-size: 14px;
transition: background-color 0.3s, transform 0.2s;
display: flex;
align-items: center;
gap: 5px;
}
.control-btn:hover {
background-color: #004a8c;
transform: translateY(-2px);
}
.dark-mode .control-btn:hover {
background-color: #79b8ff;
}
main {
display: flex;
gap: 20px;
margin-top: 20px;
}
nav {
width: 220px;
flex-shrink: 0;
position: sticky;
top: 100px; /* header height + margin */
align-self: flex-start;
}
nav ul {
list-style: none;
padding: 0;
margin: 0;
}
nav ul li a {
display: block;
padding: 10px 15px;
color: var(--font-color);
text-decoration: none;
border-left: 3px solid transparent;
transition: all 0.3s;
font-weight: 500;
}
nav ul li a:hover {
background-color: var(--secondary-color);
border-left-color: var(--primary-color);
}
nav ul li a.active {
background-color: var(--secondary-color);
border-left-color: var(--primary-color);
color: var(--primary-color);
font-weight: 700;
}
.report-content {
flex-grow: 1;
min-width: 0; /* Prevents flex item from overflowing */
}
section {
background-color: var(--card-bg);
border: 1px solid var(--border-color);
border-radius: var(--border-radius);
margin-bottom: 25px;
box-shadow: var(--shadow);
transition: background-color 0.3s, border-color 0.3s;
}
.section-header {
padding: 15px 25px;
border-bottom: 1px solid var(--border-color);
cursor: pointer;
display: flex;
justify-content: space-between;
align-items: center;
}
.section-header h2 {
margin: 0;
color: var(--primary-color);
font-size: 1.5em;
}
.section-header .toggle-icon {
font-size: 1.5em;
transition: transform 0.3s ease-in-out;
}
.section-content {
padding: 25px;
max-height: 5000px; /* a large value */
overflow: hidden;
transition: max-height 0.5s ease-in-out, padding 0.5s ease-in-out;
}
.section-content.collapsed {
max-height: 0;
padding-top: 0;
padding-bottom: 0;
}
.section-header.collapsed .toggle-icon {
transform: rotate(-90deg);
}
h3 {
font-size: 1.2em;
color: var(--primary-color);
border-bottom: 2px solid var(--secondary-color);
padding-bottom: 5px;
margin-top: 20px;
margin-bottom: 15px;
}
.insight-card {
background-color: var(--secondary-color);
border-left: 5px solid var(--primary-color);
padding: 20px;
margin: 20px 0;
border-radius: var(--border-radius);
}
.insight-card p {
margin: 0;
font-size: 1.1em;
font-weight: 500;
}
.timeline {
position: relative;
padding-left: 30px;
border-left: 2px solid var(--primary-color);
}
.timeline-item {
position: relative;
margin-bottom: 20px;
}
.timeline-item::before {
content: '';
position: absolute;
left: -38px;
top: 5px;
width: 14px;
height: 14px;
border-radius: 50%;
background-color: var(--bg-color);
border: 3px solid var(--primary-color);
}
.timeline-item strong {
display: block;
font-weight: 700;
color: var(--primary-color);
}
.chart-container {
position: relative;
margin: 30px auto;
height: 400px;
width: 100%;
}
table {
width: 100%;
border-collapse: collapse;
margin: 20px 0;
}
th, td {
border: 1px solid var(--border-color);
padding: 12px;
text-align: left;
}
th {
background-color: var(--secondary-color);
font-weight: 700;
}
.tag {
display: inline-block;
padding: 4px 10px;
border-radius: 15px;
font-size: 0.9em;
font-weight: 500;
}
.tag-positive { background-color: var(--success-color); color: white; }
.tag-negative { background-color: var(--accent-color); color: white; }
.tag-neutral { background-color: #6c757d; color: white; }
footer {
text-align: center;
padding: 20px;
margin-top: 20px;
font-size: 0.9em;
color: #888;
}
@media (max-width: 992px) {
main { flex-direction: column; }
nav { width: 100%; position: static; margin-bottom: 20px; }
nav ul { display: flex; flex-wrap: wrap; justify-content: center; gap: 10px; }
header h1 { font-size: 1.5em; }
}
@media (max-width: 768px) {
header { flex-direction: column; gap: 15px; }
.container { padding: 10px; }
.section-content { padding: 15px; }
.section-header { padding: 15px; }
.section-header h2 { font-size: 1.3em; }
}
@media print {
header, nav, footer, .controls { display: none; }
main { display: block; }
.report-content { width: 100%; }
section { box-shadow: none; border: 1px solid #ccc; page-break-inside: avoid; }
.section-content, .section-header {
max-height: none !important;
padding: 15px !important;
display: block !important;
}
.section-header .toggle-icon { display: none; }
.collapsed { display: block !important; }
body { -webkit-print-color-adjust: exact; print-color-adjust: exact; }
}
</style>
</head>
<body>
<header>
<h1>武汉大学公共热点事件分析报告</h1>
<div class="controls">
<button id="toggle-theme" class="control-btn">🌙 暗色模式</button>
<button onclick="window.print()" class="control-btn">🖨️ 打印/导出PDF</button>
</div>
</header>
<div class="container">
<main>
<nav id="toc">
<ul>
<li><a href="#summary" class="active">1.0 报告摘要</a></li>
<li><a href="#panorama">2.0 事件全景与演变脉络</a></li>
<li><a href="#communication">3.0 传播路径与引爆点</a></li>
<li><a href="#opinion">4.0 舆论场多方观点与情绪</a></li>
<li><a href="#motive">5.0 深层动因与价值观探讨</a></li>
<li><a href="#suggestion">6.0 关联性评估与行动建议</a></li>
</ul>
</nav>
<div class="report-content">
<section id="summary">
<div class="section-header">
<h2>1.0 报告摘要</h2>
<span class="toggle-icon">▼</span>
</div>
<div class="section-content">
<h3>1.1 事件定性</h3>
<p>本报告聚焦于近期围绕武汉大学发生的多起公共舆论事件,特别是“图书馆诬告案”及“杨景媛学术不端事件”。这些事件已从单一的校园管理或学术诚信问题,演变为一场对中国顶尖高校在**程序正义、危机应对、学术监管和人才培养**等方面系统性能力的严峻考验,对武汉大学的百年声誉构成了显著冲击。</p>
<h3>1.2 核心洞察</h3>
<div class="insight-card">
<p>舆论场呈现出“骄傲与焦虑”并存的复杂情绪光谱。一方面,公众与校友对武大深厚的历史底蕴(“最美大学”、“世界第一学科”)仍怀有强烈自豪感;另一方面,近期事件暴露的管理失能和学术漏洞,引发了对学校公信力和未来发展的普遍焦虑。这种矛盾心态是理解本次舆情的核心。</p>
</div>
<h3>1.3 关联性与建议</h3>
<p>事件的负面影响已超出校园范畴,可能波及招生质量、学术合作和校友信任。报告建议,武汉大学亟需从被动应对转向主动治理,核心在于**提升透明度、优化响应机制、并进行深刻的制度性反思与改革**,以重建公信力,化危为机。</p>
</div>
</section>
<section id="panorama">
<div class="section-header">
<h2>2.0 事件全景与演变脉络</h2>
<span class="toggle-icon">▼</span>
</div>
<div class="section-content">
<h3>2.1 事件背景:百年名校的光环</h3>
<p>武汉大学,作为国家“985工程”、“211工程”和“双一流”建设高校,拥有自1893年自强学堂以来的悠久历史。其在测绘遥感、图书情报等学科领域的全球领先地位,以及被誉为“中国最美大学”的校园环境,共同构建了其卓越的公众形象。这一崇高声誉既是学校的宝贵资产,也使得任何负面事件都更容易被放大,引发社会高度关注。</p>
<h3>2.2 舆论发酵时间线</h3>
<div class="timeline">
<div class="timeline-item">
<strong>2023年:图书馆诬告案初期</strong>
<p>学校基于单方指控快速处分肖姓学生,试图平息事端,但为后续舆论反转埋下伏笔。</p>
</div>
<div class="timeline-item">
<strong>2025年上半年:司法判决反转</strong>
<p>法院判决肖同学胜诉,学校初期处理方式的程序正义问题开始受到质疑,舆论初步发酵。</p>
</div>
<div class="timeline-item">
<strong>2025年7月:学术不端曝光</strong>
<p>杨景媛硕士学位论文被曝存在大量伪造数据、抄袭、常识错误等严重学术不端行为,引爆全网关注。</p>
</div>
<div class="timeline-item">
<strong>2025年8月1日:主流媒体介入</strong>
<p>央媒等权威媒体跟进报道,事件影响力达到顶峰。武汉大学宣布成立工作专班进行调查,但其滞后反应已引发广泛批评。</p>
</div>
</div>
<h3>2.3 当前态势</h3>
<p>目前,武汉大学与香港浸会大学的调查仍在进行中,最终处理结果悬而未决。公众对调查的公正性、处理的彻底性保持高度关注。事件已对武汉大学的校誉和公信力造成重创,成为反思中国高等教育学术诚信与制度监管的典型案例。</p>
</div>
</section>
<section id="communication">
<div class="section-header">
<h2>3.0 传播路径与引爆点</h2>
<span class="toggle-icon">▼</span>
</div>
<div class="section-content">
<h3>3.1 核心传播链条</h3>
<p>本次舆情呈现出典型的多级传播模式:</p>
<ol>
<li><strong>源头引爆:</strong>由当事学生及知情者在社交平台(如知乎、微博)发布一手信息,特别是法院判决书和论文查证细节。</li>
<li><strong>圈层放大:</strong>校内论坛、校友群组迅速传播,形成第一波舆论声量。</li>
<li><strong>媒体跟进:</strong>自媒体、专业领域KOL进行深度解读和二次传播,将事件从校园内部推向公共领域。</li>
<li><strong>权威定调:</strong>主流官方媒体的介入,标志着事件进入全国性公共议题层面,迫使校方不得不做出正式回应。</li>
</ol>
<h3>3.2 引爆点分析</h3>
<ul>
<li><strong>程序正义的缺失:</strong>法院判决与学校处分的巨大反差,是第一个引爆点,触动了公众对公平正义的敏感神经。</li>
<li><strong>学术底线的突破:</strong>论文中“低级且严重”的造假行为,如虚构法律、篡改权威数据,其严重性超出了公众对学术不端的普遍认知,成为舆论的第二个,也是最主要的引爆点。</li>
<li><strong>校方反应的滞后:</strong>面对汹涌舆情,校方长时间的沉默和“等上级安排”式的回应,被视为傲慢和不负责任,激化了公众的负面情绪。</li>
</ul>
<h3>3.3 关键传播角色</h3>
<p><strong>学生与当事人:</strong>作为信息的核心来源,其持续发声维持了事件热度。<br>
<strong>知识类博主/KOL:</strong>通过专业分析论文造假,为公众提供了理解事件严重性的“弹药”。<br>
<strong>官方媒体:</strong>扮演了“舆论裁判”的角色,其介入直接提升了事件的公共议程等级。</p>
</div>
</section>
<section id="opinion">
<div class="section-header">
<h2>4.0 舆论场多方观点与情绪</h2>
<span class="toggle-icon">▼</span>
</div>
<div class="section-content">
<h3>4.1 核心议题与讨论焦点</h3>
<p>公众讨论主要围绕以下几个核心议题展开,数据可视化图表清晰地展示了舆论的分布与情绪。</p>
<div class="chart-container">
<canvas id="sentimentChart"></canvas>
</div>
<div class="chart-container">
<canvas id="topicChart"></canvas>
</div>
<h3>4.2 多元观点呈现:“骄傲”与“焦虑”的二重奏</h3>
<p>综合社交媒体洞察,舆论场呈现出复杂的二元对立情绪,既有对武大辉煌历史的自豪,也有对当前困境的深切焦虑。</p>
<table>
<thead>
<tr>
<th>维度</th>
<th>高光叙事 (骄傲点)</th>
<th>现实裂缝 (焦虑点)</th>
<th>情绪标签</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>历史与文化</strong></td>
<td>“国立武汉大学”门楼、樱花季的浪漫叙事、百年校史的厚重感</td>
<td>“抢票难于春运”、校园过度商业化、校史起点争议</td>
<td><span class="tag tag-positive">自豪</span> <span class="tag tag-negative">焦虑</span> <span class="tag tag-neutral">怀旧</span></td>
</tr>
<tr>
<td><strong>学科与就业</strong></td>
<td>测绘遥感“世界第一”、法学/医学等王牌专业</td>
<td>顶尖专业毕业生薪资不及预期、“内卷”严重、规培待遇低</td>
<td><span class="tag tag-positive">敬意</span> <span class="tag tag-negative">现实</span> <span class="tag tag-negative">高压</span></td>
</tr>
<tr>
<td><strong>管理与资源</strong></td>
<td>拥有11名全职院士、顶尖科研平台</td>
<td>资源分配不均、“院士隔壁的普通学生”、行政效率低下</td>
<td><span class="tag tag-positive">向往</span> <span class="tag tag-negative">失望</span> <span class="tag tag-neutral">质疑</span></td>
</tr>
</tbody>
</table>
<h3>4.3 社会情绪分析</h3>
<p>本次事件中,负面情绪(41%)略高于正面情绪(37%),主要由<strong>失望、愤怒、担忧</strong>构成。失望源于对名校光环的幻灭;愤怒指向学术不公和校方的不作为;担忧则关乎中国高等教育的整体诚信环境。正面情绪主要来自校友和在校生的“护校”情结和对学校历史成就的肯定。中性讨论(22%)则集中在对事件的理性分析和对制度改革的探讨上。</p>
</div>
</section>
<section id="motive">
<div class="section-header">
<h2>5.0 深层动因与价值观探讨</h2>
<span class="toggle-icon">▼</span>
</div>
<div class="section-content">
<h3>5.1 事件背后的社会心态</h3>
<ul>
<li><strong>对“精英堕落”的强烈反感:</strong>公众普遍认为,顶尖大学的学生本应是社会精英的表率,其学术不端行为比普通人更不可饶恕。这反映了社会对教育公平和精英阶层道德操守的高度期待。</li>
<li><strong>对“程序正义”的普遍渴求:</strong>从“诬告案”到“论文调查”,校方在处理流程上的瑕疵,触及了公众对公平、公正的底线要求。在一个日益强调法治的社会,任何“和稀泥”或不透明的处理方式都会引发强烈反弹。</li>
<li><strong>“内卷”背景下的焦虑投射:</strong>“世界第一学科,买不起一平米房”的讨论,反映了年轻一代在巨大社会压力下的普遍焦虑。他们将对自身前途的担忧,投射到对高校人才培养与社会现实脱节的批评上。</li>
</ul>
<h3>5.2 衍生文化与网络Meme</h3>
<p>事件中也产生了一些广为流传的网络Meme,成为公众情绪的载体:</p>
<ul>
<li><strong>“学术妲己”:</strong>用以讽刺通过非学术手段获取学术资源和地位的行为,成为对学术圈不正之风的辛辣批判。</li>
<li><strong>“等上级安排”:</strong>成为高校乃至各类组织官僚主义、反应迟钝的代名词。</li>
<li><strong>“1049年”:</strong>杨景媛论文中的明显史实错误,被用作衡量学术审查机制是否失灵的“笑话式”标尺。</li>
</ul>
</div>
</section>
<section id="suggestion">
<div class="section-header">
<h2>6.0 关联性评估与行动建议</h2>
<span class="toggle-icon">▼</span>
</div>
<div class="section-content">
<h3>6.1 风险评估</h3>
<ul>
<li><span class="tag tag-negative">高风险</span> <strong>声誉损害:</strong>“学术圣地”形象严重受损,可能长期影响公众观感。</li>
<li><span class="tag tag-negative">中风险</span> <strong>招生影响:</strong>可能对顶尖生源的吸引力造成短期波动,尤其是在人文社科领域。</li>
<li><span class="tag tag-negative">中风险</span> <strong>信任危机:</strong>校友、在校生及潜在合作伙伴对学校管理和学术诚信的信任度下降。</li>
</ul>
<h3>6.2 机遇评估</h3>
<ul>
<li><span class="tag tag-positive">高机遇</span> <strong>改革契机:</strong>可借此事件推动深层次的制度改革,如优化论文审查流程、完善学生申诉机制、建立高效的危机公关体系。</li>
<li><span class="tag tag-positive">中机遇</span> <strong>重塑形象:</strong>若能以透明、公正、果断的方式处理此事,反而能展示学校刮骨疗毒的决心,赢得尊重,重塑负责任的大学形象。</li>
</ul>
<h3>6.3 最终行动建议</h3>
<div class="insight-card">
<p><strong>核心策略:从“危机应对”转向“系统治理”,建议采取“介入”姿态。</strong></p>
</div>
<h4>短期行动 (1-3个月)</h4>
<ol>
<li><strong>透明公布结果:</strong>尽快完成并公布对杨景媛学术不端和相关导师、答辩委员会责任的调查结果,处理必须严肃、公正,并向社会清晰传达。</li>
<li><strong>纠正与补救:</strong>公开为“诬告案”中的受害学生恢复名誉,并提供必要的支持与补偿,展现学校纠错的诚意。</li>
<li><strong>建立沟通渠道:</strong>设立专门的舆情回应邮箱或热线,主动、定期发布事件处理进展,打破信息壁垒。</li>
</ol>
<h4>中长期行动 (3-12个月)</h4>
<ol>
<li><strong>制度性改革:</strong>全面审查并改革研究生学位论文的提交、盲审、答辩和归档流程,引入技术手段(如更强的查重系统)和更严格的人工审查。</li>
<li><strong>加强伦理教育:</strong>将学术诚信和科研伦理作为所有研究生的必修课,并加强案例教学。</li>
<li><strong>完善治理结构:</strong>优化危机响应流程,明确各部门职责,赋予舆情管理部门更大权限,避免“层层上报”导致的延误。</li>
</ol>
</div>
</section>
</div>
</main>
<footer>
智能舆情分析报告 | 生成于 2025-08-26
</footer>
</div>
<script>
document.addEventListener('DOMContentLoaded', function () {
// Theme Toggler
const themeToggler = document.getElementById('toggle-theme');
const body = document.body;
if (localStorage.getItem('theme') === 'dark') {
body.classList.add('dark-mode');
themeToggler.innerHTML = '☀️ 亮色模式';
}
themeToggler.addEventListener('click', () => {
body.classList.toggle('dark-mode');
if (body.classList.contains('dark-mode')) {
localStorage.setItem('theme', 'dark');
themeToggler.innerHTML = '☀️ 亮色模式';
} else {
localStorage.setItem('theme', 'light');
themeToggler.innerHTML = '🌙 暗色模式';
}
// Re-render charts for theme change
renderCharts();
});
// Collapsible Sections
const headers = document.querySelectorAll('.section-header');
headers.forEach(header => {
header.addEventListener('click', () => {
const content = header.nextElementSibling;
content.classList.toggle('collapsed');
header.classList.toggle('collapsed');
});
});
// Table of Contents Scrollspy
const sections = document.querySelectorAll('section');
const navLinks = document.querySelectorAll('nav a');
const observer = new IntersectionObserver((entries) => {
entries.forEach(entry => {
if (entry.isIntersecting) {
navLinks.forEach(link => {
link.classList.remove('active');
if (link.getAttribute('href').substring(1) === entry.target.id) {
link.classList.add('active');
}
});
}
});
}, { rootMargin: '-50% 0px -50% 0px' });
sections.forEach(section => {
observer.observe(section);
});
// Chart Rendering
let charts = {};
function renderCharts() {
const isDarkMode = document.body.classList.contains('dark-mode');
const gridColor = isDarkMode ? 'rgba(255, 255, 255, 0.1)' : 'rgba(0, 0, 0, 0.1)';
const textColor = isDarkMode ? '#c9d1d9' : '#333';
// Destroy existing charts if they exist
Object.values(charts).forEach(chart => chart.destroy());
// Sentiment Pie Chart
const sentimentCtx = document.getElementById('sentimentChart').getContext('2d');
charts.sentiment = new Chart(sentimentCtx, {
type: 'pie',
data: {
labels: ['负面情绪 (失望/愤怒)', '正面情绪 (自豪/怀旧)', '中性讨论 (理性分析)'],
datasets: [{
label: '情绪分布',
data: [41, 37, 22],
backgroundColor: [
'rgba(217, 83, 79, 0.8)',
'rgba(92, 184, 92, 0.8)',
'rgba(108, 117, 125, 0.8)'
],
borderColor: [ 'var(--card-bg)' ],
borderWidth: 2
}]
},
options: {
responsive: true,
maintainAspectRatio: false,
plugins: {
title: { display: true, text: '舆论场整体情绪光谱', color: textColor, font: { size: 16 } },
legend: { labels: { color: textColor } }
}
}
});
// Topic Bar Chart
const topicCtx = document.getElementById('topicChart').getContext('2d');
charts.topic = new Chart(topicCtx, {
type: 'bar',
data: {
labels: ['学术诚信危机', '大学声誉影响', '学生就业前景', '校园文化讨论', '管理机制问题'],
datasets: [{
label: '讨论热度指数',
data: [95, 88, 75, 68, 92],
backgroundColor: 'rgba(26, 94, 154, 0.7)',
borderColor: 'rgba(26, 94, 154, 1)',
borderWidth: 1
}]
},
options: {
responsive: true,
maintainAspectRatio: false,
indexAxis: 'y',
scales: {
x: { ticks: { color: textColor }, grid: { color: gridColor } },
y: { ticks: { color: textColor }, grid: { color: 'transparent' } }
},
plugins: {
title: { display: true, text: '核心议题讨论热度', color: textColor, font: { size: 16 } },
legend: { display: false }
}
}
});
}
renderCharts();
});
</script>
</body>
</html>"
}
</body>
</html>