统计与图表
Obsidian 不仅可以记录笔记,还可以通过插件实现数据统计和可视化,帮助你追踪习惯、分析数据、生成报告。
概述
为什么需要统计图表?
| 场景 | 价值 |
|---|---|
| 习惯追踪 | 记录每日习惯完成情况 |
| 数据分析 | 分析笔记、任务、阅读等数据 |
| 进度监控 | 项目进度、学习进度可视化 |
| 知识统计 | 了解知识库的规模和结构 |
| 报告生成 | 自动生成周报、月报 |
主要工具
| 工具 | 类型 | 适用场景 |
|---|---|---|
| Dataview | 数据查询 | 笔记统计、数据筛选 |
| Tracker | 习惯追踪 | 时间序列数据、习惯打卡 |
| Charts | 图表展示 | 数据可视化 |
| Heatmap Calendar | 热力图 | GitHub 风格活动日历 |
| Obisidian Stats | 仓库统计 | 整体数据分析 |
Dataview 数据查询
基础统计
Dataview 是最强大的数据查询工具,可以进行各种统计:
笔记数量统计
dataview
TABLE length(rows) as 数量
FROM ""
GROUP BY file.folder as 文件夹
SORT 数量 DESC按标签统计
dataview
TABLE
length(filter(rows, (r) => r.file.tags)) as 标签数量
FROM ""
WHERE file.tags进阶统计
最近修改统计
dataview
TABLE
file.mtime as 最后修改,
date(now) - file.mtime as 距今天数
FROM ""
WHERE file.mtime >= date(today) - dur(7 days)
SORT file.mtime DESC
LIMIT 20任务完成率
dataview
TABLE
length(filter(file.tasks, (t) => t.completed)) as 已完成,
length(file.tasks) as 总任务,
round(length(filter(file.tasks, (t) => t.completed)) / length(file.tasks) * 100, 1) + "%" as 完成率
FROM "projects"
WHERE length(file.tasks) > 0数据汇总
dataview
TABLE
sum(rows.file.size) as 总大小,
length(rows) as 笔记数,
sum(length(rows.file.tasks)) as 总任务数
FROM ""Tracker 习惯追踪
安装配置
- 安装「Tracker」插件
- 在日记或指定笔记中记录数据
- 使用命令生成追踪图
基本使用
数据记录
在笔记中使用 YAML frontmatter 记录:
yaml
---
mood: 8
sleep: 7
exercise: 1
reading: 30
---或者使用内联标记:
markdown
# 今天的心情
mood:: 8
# 睡眠时长
sleep:: 7
# 运动
exercise:: ✅
# 阅读时间(分钟)
reading:: 30生成图表
使用代码块创建追踪图:
tracker
searchType: frontmatter
searchTarget: mood
folder: diary
startDate: 2024-01-01
endDate: 2024-01-31
line:
title: 心情追踪
yAxisLabel: 心情指数
lineColor: "#7c3aed"图表类型
折线图
tracker
searchType: frontmatter
searchTarget: sleep
folder: diary
line:
title: 睡眠时长追踪
yAxisLabel: 小时
lineColor: blue
pointColor: blue
pointRadius: 3柱状图
tracker
searchType: frontmatter
searchTarget: reading
folder: diary
bar:
title: 每日阅读时间
yAxisLabel: 分钟
barColor: green热力图
tracker
searchType: frontmatter
searchTarget: exercise
folder: diary
heatmap:
title: 运动热力图
colorRange: ["#ebedf0", "#9be9a8", "#40c463", "#30a14e", "#216e39"]高级配置
多数据对比
tracker
searchType: frontmatter
searchTarget: mood, sleep
folder: diary
line:
title: 心情与睡眠对比
series1:
name: 心情
lineColor: purple
series2:
name: 睡眠
lineColor: blue
yAxisLabel: 数值目标线
tracker
searchType: frontmatter
searchTarget: steps
folder: diary
line:
title: 每日步数
yAxisLabel: 步数
lineColor: green
thresholdLine: 8000
thresholdLineColor: red
thresholdLabelText: 目标 8000 步Charts 图表插件
安装
安装「Obsidian Charts」插件,支持更多图表类型。
基本用法
饼图
chart
type: pie
title: 任务分类统计
labels: [工作, 学习, 生活, 娱乐]
series: [40, 25, 20, 15]
colors: ["#7c3aed", "#3b82f6", "#10b981", "#f59e0b"]柱状图
chart
type: bar
title: 月度阅读统计
labels: [1月, 2月, 3月, 4月, 5月, 6月]
series:
- name: 书籍
data: [5, 3, 4, 6, 4, 5]
- name: 文章
data: [12, 15, 10, 18, 14, 16]雷达图
chart
type: radar
title: 技能评估
labels: [编程, 设计, 写作, 沟通, 管理]
series:
- name: 当前水平
data: [8, 6, 7, 5, 6]
- name: 目标水平
data: [9, 8, 8, 7, 8]与 Dataview 联动
结合 Dataview 数据生成图表:
markdown
<!-- 先用 Dataview 查询数据 -->
```dataview
TABLE length(rows) as 数量
FROM "projects"
GROUP BY statuschart
type: pie
title: 项目状态分布
labels: [进行中, 已完成, 暂停]
series: [5, 12, 2]
## Heatmap Calendar 热力图
### 安装配置
安装「Heatmap Calendar」插件,生成 GitHub 风格的活动日历。
### 基本用法
#### 通用热力图
```heatmap
startDate: 2024-01-01
endDate: 2024-12-31
searchType: frontmatter
searchTarget: mood
folder: diary自定义颜色
heatmap
startDate: 2024-01-01
searchType: tag
searchTarget: "#运动"
colors: ["#f0f0f0", "#c6e48b", "#7bc96f", "#239a3b", "#196127"]应用场景
yaml
常见用途:
- 写作活动追踪
- 运动打卡记录
- 学习时间统计
- 项目开发进度
- 阅读量统计Obisidian Stats 仓库统计
安装
安装「Obsidian Stats」插件,获取仓库整体统计信息。
统计内容
| 统计项 | 说明 |
|---|---|
| 笔记总数 | 仓库中的笔记数量 |
| 总字数 | 所有笔记的字数 |
| 平均字数 | 每篇笔记的平均字数 |
| 创建趋势 | 每月创建的笔记数 |
| 修改趋势 | 笔记修改频率 |
| 链接统计 | 内部链接数量 |
| 标签统计 | 标签使用情况 |
| 附件统计 | 图片、文件数量 |
使用方法
- 打开命令面板
- 输入「Obsidian Stats: Show Stats」
- 查看统计面板
实战案例
习惯追踪看板
创建一个综合习惯追踪页面:
markdown
# 📊 习惯追踪看板
## 本周运动
```tracker
searchType: frontmatter
searchTarget: exercise
folder: diary
startDate: date(today) - dur(7 days)
bar:
title: 本周运动情况
barColor: green心情趋势
tracker
searchType: frontmatter
searchTarget: mood
folder: diary
startDate: date(today) - dur(30 days)
line:
title: 30天心情趋势
lineColor: purple阅读热力图
heatmap
searchType: tag
searchTarget: "#阅读"
startDate: date(today) - dur(90 days)
### 项目进度追踪
```markdown
# 项目进度
## 任务完成情况
```dataview
TABLE
file.link as 项目,
length(filter(file.tasks, (t) => t.completed)) as 已完成,
length(file.tasks) as 总任务,
round(length(filter(file.tasks, (t) => t.completed)) / length(file.tasks) * 100) + "%" as 进度
FROM "projects"
WHERE length(file.tasks) > 0
SORT 进度 DESC进度图表
chart
type: bar
title: 项目进度
labels: [项目A, 项目B, 项目C]
series:
- name: 完成进度
data: [75, 50, 90]
### 读书统计
```markdown
# 📚 阅读统计
## 本月阅读
```dataview
TABLE
title as 书名,
author as 作者,
pages as 页数,
status as 状态
FROM "books"
WHERE file.cmonth = date(today).month阅读趋势
tracker
searchType: frontmatter
searchTarget: reading_time
folder: diary
startDate: date(today) - dur(30 days)
line:
title: 每日阅读时间
yAxisLabel: 分钟
### 周报自动生成
```markdown
# 📅 周报 - <% tp.date.now("YYYY-MM-DD") %>
## 本周创建的笔记
```dataview
TABLE file.link as 笔记, file.ctime as 创建时间
FROM ""
WHERE file.ctime >= date(today) - dur(7 days)
SORT file.ctime DESC本周完成的任务
dataview
TASK
FROM ""
WHERE completed AND completion >= date(today) - dur(7 days)本周活动
heatmap
searchType: tag
searchTarget: "#工作"
startDate: date(today) - dur(7 days)
## 数据可视化最佳实践
### 选择合适的图表
| 数据类型 | 推荐图表 |
|----------|----------|
| 时间趋势 | 折线图 |
| 分类对比 | 柱状图 |
| 占比分布 | 饼图 |
| 活动频率 | 热力图 |
| 多维度评估 | 雷达图 |
### 数据记录规范
```yaml
Frontmatter 标准:
日期字段: date: 2024-01-15
数值字段: mood: 8, sleep: 7
布尔字段: exercise: true
标签: tags: [习惯, 运动]定期回顾
- 每周查看习惯追踪
- 每月分析数据趋势
- 每季度评估目标完成度
常见问题
数据不显示?
检查以下项:
- 文件夹路径是否正确
- frontmatter 字段名是否匹配
- 日期格式是否正确
- 是否启用了 Dataview 的 JavaScript 查询
图表样式不美观?
调整配置:
- 自定义颜色方案
- 调整图表尺寸
- 添加标题和标签
- 使用合适的图表类型
性能问题?
优化建议:
- 限制查询范围(指定文件夹)
- 减少数据量(设置时间范围)
- 避免在单页面使用过多图表
下一步
- Dataview 实战 - 深入学习 Dataview
- 日记功能 - 建立日记系统
- 任务管理 - 任务追踪系统
- 最佳实践 - 高效使用方法