A weekly chart in Obsidian without Tracker
You log a number in each daily note and want the weekly total as bars, with a line for your goal. Tracker draws a bar per day and has no way to add a week up. Dashy's chart block does it in six lines.
dashy-chartObsidian Charts also uses the chart code block. When Charts is on, Dashy leaves chart to it, so your Charts blocks keep working. Name the blocks below dashy-chart instead of chart: same keys, always Dashy.
1Put the number in a property
Dashy reads frontmatter only: the Properties at the top of a note. One number property per thing you measure.
---
run_km: 8.5
---
## 2026-09-14
2026-09-14The note's name is its date. That is how a value lands in its week.run_km: 8.5A plain number. A day with no run leaves the property out.
Coming from Tracker, your numbers may live in the text of the note, as a tag or a Dataview inline field. Dashy does not read either. Move each one into a property, by hand or with find and replace:
Easy run by the river. #run:8.5
run_km:: 8.5
---
run_km: 8.5
---
Easy run by the river.
2Add it up by week
Make a note for the chart, say Running.md, and paste this block. It draws the picture above.
```chart
source: Diary
field: run_km
type: bar
bucket: week
unit: km
goal: 30
```
bucket: weekAdds up every value in a week. The week starts on Monday or Sunday, as your language has it.type: barBars. Leave it out for a line.goal: 30A dashed line at 30, with its value. The axis always stretches to show it.- RangeBy default the last 182 days for weeks.
range: 90dorrange: yearto change it.
The week you are in is drawn lighter, and its tooltip says "so far". A week with no runs is a gap, never a zero. Hover a bar for its total.
3Several numbers side by side
Up to four properties on one chart with series, each its own bar. Times work as they are written: 51min, 1h 12m, 0:48:30.
```chart
source: Diary
type: bar
bucket: week
series:
- { field: run_time, label: Run }
- { field: bike_time, label: Bike, color: orange }
- { field: swim_time, label: Swim, color: cyan }
```
Bars stand side by side, never stacked, on one axis. For two numbers on different scales, steps and sleep for example, use two chart blocks.
The whole note
Both charts in one piece, ready to paste into an empty note.
```chart
source: Diary
field: run_km
type: bar
bucket: week
unit: km
goal: 30
```
```chart
source: Diary
type: bar
bucket: week
series:
- { field: run_time, label: Run }
- { field: bike_time, label: Bike, color: orange }
- { field: swim_time, label: Swim, color: cyan }
```
The same chart with Tracker or dataviewjs
Both read the same run_km property.
```tracker
searchType: frontmatter
searchTarget: run_km
folder: Diary
startDate: -6M
endDate: 0d
bar:
title: Running
yAxisLabel: Distance
yAxisUnit: km
```
- One bar per day. Tracker has no setting to add up a week; that is an open request.
- Tracker's docs list no goal line for bar or line charts.
- Tracker also reads tags (
searchType: tag), inline fields (searchType: dvField) and text. If you keep it for that, keep it.
```dataviewjs
const weeks = {};
for (const p of dv.pages('"Diary"').where(p => p.run_km && p.file.day)) {
const key = p.file.day.startOf("week").toFormat("yyyy-MM-dd");
weeks[key] = (weeks[key] ?? 0) + p.run_km;
}
const labels = Object.keys(weeks).sort().slice(-26);
window.renderChart({
type: "bar",
data: { labels, datasets: [{ label: "Run, km", data: labels.map(k => weeks[k]) }] },
}, this.container);
```
- Two plugins: Dataview with Enable JavaScript queries on, and Obsidian Charts for
renderChart. - A week with no runs has no key in
weeks, so it drops off the axis instead of showing as a gap.
| Dashy | Tracker | dataviewjs | |
|---|---|---|---|
| Weekly totals | bucket: week | No, a bar per day | Group in code |
| A week with no data | A gap | Days with no note have no bar | Drops off the axis |
| Goal line | goal | Not in the docs | Write it |
| Reads tags and inline fields | No, properties only | Yes | Inline fields, yes |
| What you install | Dashy | Tracker | Dataview and Obsidian Charts |
Variations
By month, this year
A bar per calendar month, from 1 January to today.
```chart
source: Diary
field: run_km
type: bar
bucket: month
range: year
unit: km
```
A weekly average
Sleep is not a total. agg: avg takes the week's average instead of its sum.
```chart
source: Diary
field: sleep
agg: avg
bucket: week
goal: 8h
```
Habit days per week
A checkbox sums to the number of ticked days in each week.
```chart
source: Diary
field: gym
type: bar
bucket: week
goal: 3
```
Notes per week
agg: count needs no property: it counts the dated notes in each week.
```chart
source: Diary
agg: count
type: bar
bucket: week
```
If a block shows an error
A Dashy chart that cannot draw says why, inside the note. The usual three:
- An error from Obsidian Charts, not from Dashy. With Charts on, a
chartblock is Charts'. Writedashy-chart. - None of the selected notes has a name starting with a date like YYYY-MM-DD. Rename the daily notes, or add
date_field: dateif the date is a property. - "run_km" holds text or another value that is not a number. Something like
run_km: 8.5 km. Keep the number alone and put the unit inunit: km.
Related guides

Counts, streaks and a year of days from daily note checkboxes.

Each in its own colour, on one year of days.

Friday joins up with Monday. Holidays do not end the run.
Dashy is in Obsidian's community plugins. Search for Dashy, install, enable, then paste the note above.