Skip to content

Tracker 插件高级使用案例

本文介绍 Tracker 插件的进阶用法,涵盖复杂查询、Dataview 联动、自定义渲染和自动化数据收集。

复杂数据查询

多数据源聚合

tracker
```tracker
type: line
title: 综合健康指数
dateRange: 2026-06-01 to 2026-06-30
items:
  - path: Journal/Daily
    dataType: frontmatter
    key: sleep
    name: 睡眠
    color: #9C27B0
  - path: Journal/Daily
    dataType: frontmatter
    key: exercise
    name: 运动
    color: #4CAF50
  - path: Journal/Daily
    dataType: frontmatter
    key: mood
    name: 情绪
    color: #FF9800
yAxisLabel: 评分
showLegend: true
```

条件筛选

tracker
```tracker
type: bar
title: 按项目统计任务完成情况
dateRange: 2026-06-01 to 2026-06-30
folder: Journal/Daily
dataType: task
filter: '#项目'
stack: true
barColor: ["#4CAF50", "#2196F3", "#FF9800"]
```

移动平均

tracker
```tracker
type: line
title: 7 天移动平均
dateRange: 2026-06-01 to 2026-06-30
folder: Journal/Daily
dataType: frontmatter
key: weight
lineColor: #2196F3
smoothing: 7
showRawData: false
```

Dataview 联动

Dataview 作为数据源

dataview
TABLE file.link AS 项目, 
      length(filter(file.tasks, t => t.completed)) AS 已完成,
      length(filter(file.tasks, t => !t.completed)) AS 待办
FROM "04 - Projects"
WHERE file.mtime >= date(today) - dur(30 days)
```

转换为 Tracker 图表:

tracker
```tracker
type: bar
title: 项目任务对比
folder: 04 - Projects
dataType: task
stack: true
dateRange: 2026-06-01 to 2026-06-30
barColor: ["#4CAF50", "#FF5722"]
```

高级可视化

甘特图

tracker
```tracker
type: bar
title: 项目时间线
dateRange: 2026-06-01 to 2026-08-31
data:
  - name: 项目 A
    start: 2026-06-01
    end: 2026-06-30
    color: #4CAF50
  - name: 项目 B
    start: 2026-06-15
    end: 2026-07-31
    color: #2196F3
  - name: 项目 C
    start: 2026-07-15
    end: 2026-08-31
    color: #FF9800
showLegend: true
```

热力图

tracker
```tracker
type: heatmap
title: 每日活动热力图
dateRange: 2026-01-01 to 2026-12-31
folder: Journal/Daily
dataType: frontmatter
key: tasks-completed
color: yellow-green
showLegend: true
```

自动化数据收集

QuickAdd 宏自动录入

javascript
// quickadd-macro: habit-log
module.exports = {
  entry: async ({ app }) => {
    const file = app.workspace.getActiveFile();
    if (file) {
      const date = new Date().toISOString().slice(0, 10);
      const template = `
habit-exercise: ${await ask('运动时长(小时)?')}
habit-reading: ${await ask('阅读时长(小时)?')}
habit-mood: ${await ask('情绪评分(1-5)?')}
      `;
      await app.vault.append(file, template);
      new Notice('已记录今日习惯数据');
    }
  }
};

趋势分析

dataview
```dataview
TABLE 
  avg(rows.sleep) AS 平均睡眠,
  min(rows.sleep) AS 最低睡眠,
  max(rows.sleep) AS 最高睡眠,
  round(stdev(rows.sleep), 1) AS 睡眠波动
FROM "Journal/Daily"
WHERE file.day >= date(today) - dur(30 days)
FLATTEN file.frontmatter.sleep AS sleep
GROUP BY ""
```

常见问题

Q: 如何追踪跨文件夹数据?

folder 选项中使用多个路径:

folders:
  - Journal/Daily
  - Health Logs
  - Fitness

Q: 图表数据更新延迟?

Tracker 默认缓存数据,可在设置中调整刷新频率,或使用 Ctrl + R 手动刷新。