Jazzと読書の日々

iPadを筆記具として使う方法を模索します

Obsidianで体重の折れ線グラフを描く方法

Chartsの使い方を忘れそうなので。

Charts

Obsidanでグラフを描くプラグイン。 実験データを図示するのに便利かな、と思ったんですが、別に実験をしてるわけじゃないので出番無し。

とすると体重管理か。 自分をモルモットにするのか。

dataviewのおさらい

デイリーノートのどこかに「weight:: 77」と書いておくと、それをキーにできます。 プロパティに「weight」という欄を作るのでもいい。 日本語で「体重:: 77」でも構いません。 記録しやすいように記録してください。

dataviewで拾い上げる場合は下記のように書きます。

```dataviewjs
const k = ["日付", "体重"]
const d = dv.pages('"journals"')
  .sort(x => x.file.ctime, "desc")
  .limit(7)
  .map(x => [x.file.link, x.weight])

dv.table(k, d)
```

この1週間の体重が表形式で表示されます。

デイリーノートをjournalsフォルダに入れているので pages() で絞り込んで、ソートしてから7日分だけ取りだす。 そのあと x.weight でweightキーをマップにしています。

ここまでは普通のdataviewの使い方。

グラフ作成

このdataview内でChartsの関数が使えます。

```dataviewjs
const d = dv.pages('"journals"')
  .sort(x => x.file.ctime, "desc")
  .limit(7)
  .sort(x => x.file.ctime)

const File = d.map(x => x.file.name).values
const Weight = d.map(x => x.weight).values

const Chart = {
  type: "line",
  data: {
    labels: File,
    datasets: [{
      label: "体重",
      data: Weight,
      backgroundColor: "orange",
      borderColor: "brown"
    }]
  }
}

window.renderChart(Chart, this.container)
```

mapを使って values の配列を作ります。 それをCharts用の変数 Chart に埋め込む。 そして最後に renderChart() で描画してもらう。

この流れで体重の折れ線グラフが作成されます。

こんな感じですね。 backgroundColor や borderColor でグラフの色合いを変えることができるので、やる気の出る配色にしてください。

Chart.js

このデータ構造は Chart.js に準じているようです。 配色のカスタマイズもこれと同じ。 これを見ると、単純なグラフ作成だけでは終わらない。

まとめ

値抜けがあると表示できないので、毎日の記録を欠かさぬように。

Obsidianはdataviewで棒グラフがわかりやすい - Jazzと読書の日々