编写程序录入每日情绪标签,持续时长,绘制一周情绪曲线,识别情绪低谷周期。
2026/6/15 18:40:14 网站建设 项目流程

基于每日情绪标签与持续时长的情绪曲线绘制与低谷周期识别(教学级健康管理原型)

内容不涉及心理诊断、不推荐产品、不做疗效承诺、无任何引流。

一、实际应用场景描述

在智能健康管理课程中,情绪监测(Mood Monitoring)是心理健康管理的核心技能之一。

本程序适用于:

- 个人情绪自我管理

- 心理咨询辅助记录

- 学校心理健康教育

- 健康管理专业实验教学

核心目标:

- 录入每日情绪标签与持续时长

- 绘制一周情绪变化趋势

- 识别情绪低谷周期

- 输出非临床观察建议

✅ 不替代心理医生

✅ 不做精神科诊断

✅ 仅作为健康意识与数据素养工具

二、痛点引入(真实可感知)

痛点 表现

情绪模糊 “今天还行”无法量化

记忆偏差 忘记前几天真实状态

看不到趋势 只关注单日情绪

低谷难发现 情绪下滑过程被忽略

工具过重 专业量表门槛太高

👉 需要一个轻量、本地、可视化的情绪记录工具

三、核心逻辑讲解(工程视角)

1️⃣ 数据模型设计

DailyMood

├── date 日期

├── mood_label 情绪标签

├── duration 持续时长(小时)

└── intensity 情绪强度(1–10)

2️⃣ 情绪量化规则(教学用)

情绪标签 基础分值

愉悦 9

平静 7

中性 5

低落 3

焦虑 2

沮丧 1

3️⃣ 情绪指数计算

当日情绪指数 =

基础分值 × 强度系数 × 时长系数

4️⃣ 低谷识别逻辑

- 连续 ≥3 天 情绪指数低于阈值

- 或单日情绪指数显著下降

5️⃣ 可视化

- 使用

"matplotlib"

- 折线图展示一周趋势

- 标注低谷区间

四、Python 模块化代码(可直接运行)

📁 项目结构

mood_tracker_tool/

├── main.py

├── models.py

├── analyzer.py

├── visualizer.py

├── storage.py

└── README.md

✅ models.py(数据建模)

"""

models.py

每日情绪数据模型

"""

class DailyMood:

def __init__(self, date, mood_label, duration, intensity):

self.date = date

self.mood_label = mood_label

self.duration = duration

self.intensity = intensity

✅ analyzer.py(分析与低谷识别)

"""

analyzer.py

情绪指数计算与低谷识别

"""

MOOD_SCORE = {

"愉悦": 9,

"平静": 7,

"中性": 5,

"低落": 3,

"焦虑": 2,

"沮丧": 1

}

def calculate_mood_index(record):

base = MOOD_SCORE.get(record.mood_label, 5)

duration_factor = min(record.duration / 12, 1.5)

intensity_factor = record.intensity / 10

return base * duration_factor * intensity_factor

def detect_low_periods(records, threshold=4.0, min_days=3):

low_days = []

result = []

for i, r in enumerate(records):

index = calculate_mood_index(r)

if index < threshold:

low_days.append(i)

else:

if len(low_days) >= min_days:

result.append((low_days[0], low_days[-1]))

low_days = []

if len(low_days) >= min_days:

result.append((low_days[0], low_days[-1]))

return result

✅ visualizer.py(可视化)

"""

visualizer.py

绘制情绪曲线

"""

import matplotlib.pyplot as plt

from analyzer import calculate_mood_index

def plot_mood_curve(records, low_periods):

dates = [r.date for r in records]

values = [calculate_mood_index(r) for r in records]

plt.figure(figsize=(8, 4))

plt.plot(dates, values, marker="o", label="情绪指数")

for start, end in low_periods:

plt.axvspan(start, end, color="red", alpha=0.2, label="情绪低谷")

plt.ylim(0, 10)

plt.xlabel("日期")

plt.ylabel("情绪指数")

plt.title("一周情绪变化曲线")

plt.legend()

plt.tight_layout()

plt.show()

✅ storage.py(本地存储)

"""

storage.py

JSON 本地存储

"""

import json

FILE_PATH = "mood_records.json"

def save_records(records):

data = [r.__dict__ for r in records]

with open(FILE_PATH, "w", encoding="utf-8") as f:

json.dump(data, f, ensure_ascii=False, indent=2)

✅ main.py(交互入口)

"""

main.py

情绪曲线与低谷识别工具

"""

from models import DailyMood

from analyzer import detect_low_periods

from visualizer import plot_mood_curve

from storage import save_records

def main():

print("=== 一周情绪记录工具 ===")

records = []

for _ in range(7):

date = input("日期(YYYY-MM-DD):")

mood = input("情绪标签:")

duration = float(input("持续时长(小时):"))

intensity = int(input("情绪强度(1-10):"))

records.append(DailyMood(date, mood, duration, intensity))

lows = detect_low_periods(records)

print("\n【情绪低谷周期】")

for start, end in lows:

print(f"第 {start+1} 天 至 第 {end+1} 天")

plot_mood_curve(records, lows)

save_records(records)

print("✅ 数据已保存")

if __name__ == "__main__":

main()

五、README 与使用说明

# 情绪曲线与低谷识别工具(教学版)

## 项目说明

用于记录每日情绪标签与持续时长,绘制情绪曲线并识别低谷周期。

## 依赖安装

```bash

pip install matplotlib

```

## 使用方式

```bash

python main.py

```

## 适用范围

- 心理健康教学

- 健康管理课程

- 个人情绪记录

## 注意事项

- 非心理诊断工具

- 不替代专业帮助

- 结果仅作教学与自我观察

六、核心知识点卡片(教学向)

分类 内容

Python 类、列表、函数

数据分析 情绪量化、趋势识别

可视化 Matplotlib 折线图

心理健康 情绪监测概念

工程思想 模块化与解耦

可扩展性 可接入数据库 / App

七、总结(工程师视角)

这是一个完全中立、去营销化、可教学的原型系统:

✅ 不制造情绪焦虑

✅ 不伪装成诊疗工具

✅ 不依赖复杂心理学理论

它真正展示的是:

如何用 Python 把主观情绪转化为客观、可观察、可讨论的数据

利用AI解决实际问题,如果你觉得这个工具好用,欢迎关注长安牧笛!

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询