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
- FitnessQ: 图表数据更新延迟?
Tracker 默认缓存数据,可在设置中调整刷新频率,或使用 Ctrl + R 手动刷新。