1

私のJavascriptの経験不足についてお詫び申し上げます。私は JavaScript と D3 の初心者で、Mike Dewar の Getting Started with D3 bookから地下鉄の待ち時間評価の例を適応させようとしています。

与えられたように、この例では、地下鉄路線がプロットされていない状態で読み込まれます。プロットするには、いずれかをクリックする必要があります。ビジュアライゼーションが開始されたときに、行の 1 つ (「A」行など) が既定で既にプロットされているように、コードを変更するのは簡単だと思いました。

これを行うには、Dewar のスクリプトの get_timeseries_data 関数内からコードの一部をコピーして貼り付けます (いくつかのチェックを行い、draw_timeseries 関数を呼び出します)。しかし、これは間違っているようです。関数を書くポイントは、get_timeseries_data 自体を直接呼び出せるようにすることですよね?

Dewar の最終的なコード チャンクでは selection.on('click') が使用されているため、これを模倣するのは論理的に思えますが、代わりに .on('load') を使用します。

d3.select('#Line_A_key')
  .on('load', get_timeseries_data);

これをスクリプトの最後に追加しても機能しません。コンソールにエラーさえ表示されないので、'load' イベントはまったく発生しないと思います。なぜでしょうか?

だから、「ロード」イベントを待たずに get_timeseries_data 関数を直接呼び出すことができるのではないかと考えました:

d3.select('#Line_A_key')
  .get_timeseries_data();

しかし、これは、オブジェクトにメソッド「get_timeseries_data」がないことを訴えています。わかりました、これは本当ですが、質問があります - D3 でいつ関数を呼び出すことができますか?

D3 (または JS のすべてですか?) には、データとインデックスをパラメーターとして受け取る関数を期待する特定の状況があるようです。これらの状況が何であるかを知るにはどうすればよいですか? また、この形式の関数が既にある場合、これらの状況以外でも呼び出すことができますか?それとも、他の場合にはまったく新しい関数を作成する必要がありますか?

D3 API を閲覧したり、いくつかのオンライン チュートリアルを参照したりしても、これらの質問に自分で答えることができませんでした。また、最も残念なことに、Dewar の本からも答えられませんでした。代わりにどこを見ればよかったですか?

4

1 に答える 1