昔ジャズ・アーティストのcsvを作ったけどどこに行ったかな?
検索付きdataview
プロパティを活用してdataviewの絞り込みをする。 そうそう、こういう動的なデータベースが欲しかったのでした。
今回はChartsプラグインを絡め、グラフ変換できるようにします。
CSViewer.md
プロパティに変数を並べるタイプです。
--- csv: covid.md query: chart: fig: --- ```dataviewjs const color = ["navy", "darkred", "orange"] const csv = await dv.io.csv(dv.current().csv) const s = Object.keys(csv.values[0]) const q = dv.current().query || "" const c = dv.current().chart || "" const f = dv.current().fig || "fig1. " const d = csv.values .map(x => Object.values(x)) .filter(x => x.toString().includes(q)) dv.span("[[" + dv.current().csv + "]]") const btn = dv.el("button", "📌") btn.style = "width:20px;" if(c){ const t = f + s.shift() const Chart = {type: c, data:{datasets:[]}} Chart.data.labels = s i = 0 for(k in d){ Chart.data.datasets[k] = {} Chart.data.datasets[k].label = d[k].shift() Chart.data.datasets[k].data = d[k] Chart.data.datasets[k].backgroundColor = color[i++%3] } window.renderChart(Chart, this.container) dv.paragraph("<center style='font-size:12px;'>" + t + "</center>") }else{ dv.table(s, d) } btn.onclick = () =>{ navigator.clipboard.writeText(dv.markdownTable(s, d)) new Notice("copied!") } ```
これをプレビューすれば完成。
使い方
csv
の欄に、対象となるcsvファイルを書きます。
今回は、前回作ったcovid.md
を使います。
もちろんcsv
の指定がなければエラーが出ます。
query
は検索ワードです。
キーワードが含まれる行を絞り込みます。
プロパティ欄はサジェスチョン・ボックスが出るので、空欄にするときはキーワードを消してからボックスの外をタップしてください。
chart
はChartsプラグインのtype
です。
- 空欄...何もなければ表形式で表示。
- bar...棒グラフを描きます。
- line...折れ線グラフを表示します。
- pie...円グラフになります。
- rader...レーダーチャートを作ります。
- polarArea...ポーラ・チャートを表示。
fig
は図番号です。
csv1行目の1項目めがタイトルになりますが、そこに「fig1.」とつけるためのもの。
「図3.」が良ければ「図3.」と書く。
スクショを撮ってトリミングすれば、そのまま論文に埋め込めます。
表の上にファイル名が表示されますが、これはリンクになっています。 タップすれば元のcsvを開く。 右隣にある赤ピンはマークダウン・テーブルです。 タップすると表形式でクリップボードに保存されます。
Excel
DOS時代の人間にはcsvが表で並ぶと、それだけで満足してしまう。 データをインタラクティブに扱っている手応えがします。
しかも今回、絞り込んだ表をそのままグラフ表示できる。 数字の並びを視覚化できる。 昔はこれだけのことに四苦八苦してたのに。 手描きでグラフを書いて、青焼きでコピーしてた時代が懐かしい。 blueprint の blue は言うほど青くないし、薬品くさい。
実はObsidianにはExcelプラグインがあってcsvを扱うことができます。 ところがモバイル版では走りません。 起動はするけど文字入力するとハングしてしまう。 入力できないだけじゃなく、アプリ自体が再起動を繰り返します。
もったいないよなあ。
まとめ
Loomにcsv出力はあるから、これでもいいけど。