D3jsデータ形式

MrTheGhost

私はD3jsの新しい人で、助けが必要です...私の仕事は為替レートのグラフを描くことです

.txtファイルに次のようなデータがあります。

date,value
2020-12-31,38.43
2020-12-08,35.43
2020-12-04,35.839
2020-10-21,36.222
2020-08-04,38.834
2020-06-04,39.562
2020-04-04,37.832
2020-03-12,38.834
2020-02-08,36.723
2020-01-04,37.834

私のJSコードは次のとおりです:(euroFileName = "euro.txt"-データファイルへのパス)

let eMargin = {top: 10, right: 30, bottom: 30, left: 30},
  eWidth = 800 - eMargin.left - eMargin.right,
  eHeight = 400 - eMargin.top - eMargin.bottom;

let svg2 = d3.select("#euroChart")
  .append("svg")
    .attr("width", eWidth + eMargin.left + eMargin.right)
    .attr("height", eHeight + eMargin.top + eMargin.bottom)
  .append("g")
    .attr("transform",
          "translate(" + eMargin.left + "," + eMargin.top + ")");

d3.csv(euroFileName,

  function(d){
        return { date : d3.timeParse("%Y-%m-%d")(d.date), value : d.value }
  },

  function(data) {
    //Only last year data
    let dateCurrent = Date.now()
    data = data.filter(function(d){return d.date >= dateCurrent - (365 * 24 * 3600 * 1000)})

    // X Axis
    let now = new Date();
    let x = d3.scaleTime()
      .domain([now - (365 * 24 * 3600 * 1000), d3.max(data, function(d) { return d.date; })])
      .range([ 0, eWidth ]);
    svg2.append("g")
      .attr("transform", "translate(0," + eHeight + ")")
      .call(d3.axisBottom(x));

    // Y Axis
    let y = d3.scaleLinear()
      .domain([d3.min(data, function(d) { return +d.value; })-2, d3.max(data, function(d) { return +d.value; })])
      .range([ eHeight, 0 ]);
    svg2.append("g")
      .call(d3.axisLeft(y));

    svg2.append("path")
      .datum(data)
      .attr("fill", "none")
      .attr("stroke", "steelblue")
      .attr("stroke-width", 1.5)
      .attr("d", d3.line()
        .x(function(d) { return x(d.date) })
        .y(function(d) { return y(d.value) })
      )
  }

)

そしてそれはうまく機能していました...しかし!!! 次に、データを別のロケールデータ形式に変更する必要があります。そして今、私はこのようになりました:

date;value
31.12.2020;31,13
21.05.2020;31,13
03.04.2020;31,13
05.11.2020;31,13
16.10.2020;31,13
29.05.2020;31,13
30.12.2020;31,13

あなたはすでに要点を理解していると思いますが、発表します:D3jsに新しい形式のデータを認識させるにはどうすればよいですか?私はhttps://d3js.org/d3.v4.jsを使用しています。要点は次の行にあるようです。

defaultLocale({
  decimal: ".",
  thousands: ",",
  grouping: [3],
  currency: ["$", ""]
});

しかし、私はそれで何ができるかわかりません...

PSデータの並べ替えについて心配する必要はありません。別のPHPスクリプトで行われます。私はすべてのデータ\コード(localhost)に完全にアクセスできます

助けていただければ幸いです!

アンドリューリード

D3.csvは、セミコロン(;)で区切られたデータでは機能しません。データを取得するには、別の方法を使用する必要があります。幸い、d3.dsvを使用して区切り文字で区切られた値を解析する場合は、任意の区切り文字を使用できます。d3v5またはv6を使用している場合は、もう少し簡単です。

区切り文字としてコンマをセミコロンに置き換えた場合は、d3.csvの代わりに次を使用できます。

D3 v5およびv6:

 d3.dsv(";", "file.dsv").then(function(data) {
     // ... do something with data
 })

行関数を追加するには、それを3番目のパラメーターとしてd3.dsvに渡すだけです。

function row(d){
     return { date : d3.timeParse("%d.%m.%Y")(d.date), value : d.value }
}

d3.dsv(";", "file.dsv",row).then(function(data) {
     // ... do something with data
 })

d3v3およびv4以前では、次のものを使用できます。

var dsv = d3.dsvFormat(";");

d3.request("test.dsv")
  .mimeType("text/plain")
  .response(function(data) { return dsv.parse(data.response) })
  .get(function(data) {
     // ... do something with data here
     console.log(data);
  });

提案された編集と質問のコードに基づいて、行関数があるように見えます。上記のv3 / 4関数で行関数を使用するには、次を使用します。

function row(d){
     return { date : d3.timeParse("%d.%m.%Y")(d.date), value : d.value }
}

let dsv = d3.dsvFormat(";");
d3.request(dollarFileName)
  .mimeType("text/plain")
  .response(function(data) { return dsv.parse(data.response, row) })
  .get(function(data) { .... 
      // use data.
  })
   

これらを使用すると、データを解析できます。これは、表示されているロケール情報であるその表現とは関係ありません。ロケール情報は、d3が区切り文字で区切られた値を解析する方法に影響を与えたり変更したりすることはありません。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

d3js階層エッジバンドルデータ形式

分類Dev

データ更新時のD3JS軸方向の変更

分類Dev

D3jsでデータを再度バインドする

分類Dev

D3jsはdata-attributeからデータを設定します

分類Dev

d3jsポリラインからデータを取得する方法は?

分類Dev

json変数d3js(javascript)からデータを初期化します

分類Dev

d3jsで複雑なデータ構造を使用する

分類Dev

d3jsでWebオーディオ周波数データを解析する方法

分類Dev

d3jsのデータ配列を含むスタックチャート

分類Dev

D3jsフィルターテーブル

分類Dev

D3jsはパス `d`属性をデータにバインドします

分類Dev

Angularでのd3jsのタイプエラー(最新)

分類Dev

.d3jsの子ノードのスタイル

分類Dev

d3js v4は、更新後に古いデータチャートを削除できません

分類Dev

d3js:最初のバーのデータが正しく表示されないのはなぜですか?

分類Dev

D3jsはファイルではなく配列からデータを取得します

分類Dev

cssおよびD3JSの疑似要素のデータ属性としての動的URL

分類Dev

ReactでD3jsから外部データを読み込めないのはなぜですか?

分類Dev

データ値を使用してd3js棒グラフに背景色を追加する

分類Dev

D3js / AngularJS-ドラッグとデータがrectの座標をバインドします

分類Dev

jsonデータをd3jsグラフの軸にプロットする

分類Dev

d3js:同じCSVから異なるデータを呼び出す-トランジション

分類Dev

d3jsマップにデータポップアップを追加する

分類Dev

d3jsを更新する方法-`svg`要素を再追加せずにグラフデータのみ

分類Dev

d3jsのデータオブジェクトを参照できません

分類Dev

d3jsを使用してファントでjsonデータをプロットする

分類Dev

d3jsツリーデザインにアプローチする方法

分類Dev

配列データから折れ線グラフをプロットするD3JS(データは未定義のエラーです)

分類Dev

postgresデータベースから選択したデータをjsonまたはcsvに変換して、d3js libで使用する方法は?

Related 関連記事

  1. 1

    d3js階層エッジバンドルデータ形式

  2. 2

    データ更新時のD3JS軸方向の変更

  3. 3

    D3jsでデータを再度バインドする

  4. 4

    D3jsはdata-attributeからデータを設定します

  5. 5

    d3jsポリラインからデータを取得する方法は?

  6. 6

    json変数d3js(javascript)からデータを初期化します

  7. 7

    d3jsで複雑なデータ構造を使用する

  8. 8

    d3jsでWebオーディオ周波数データを解析する方法

  9. 9

    d3jsのデータ配列を含むスタックチャート

  10. 10

    D3jsフィルターテーブル

  11. 11

    D3jsはパス `d`属性をデータにバインドします

  12. 12

    Angularでのd3jsのタイプエラー(最新)

  13. 13

    .d3jsの子ノードのスタイル

  14. 14

    d3js v4は、更新後に古いデータチャートを削除できません

  15. 15

    d3js:最初のバーのデータが正しく表示されないのはなぜですか?

  16. 16

    D3jsはファイルではなく配列からデータを取得します

  17. 17

    cssおよびD3JSの疑似要素のデータ属性としての動的URL

  18. 18

    ReactでD3jsから外部データを読み込めないのはなぜですか?

  19. 19

    データ値を使用してd3js棒グラフに背景色を追加する

  20. 20

    D3js / AngularJS-ドラッグとデータがrectの座標をバインドします

  21. 21

    jsonデータをd3jsグラフの軸にプロットする

  22. 22

    d3js:同じCSVから異なるデータを呼び出す-トランジション

  23. 23

    d3jsマップにデータポップアップを追加する

  24. 24

    d3jsを更新する方法-`svg`要素を再追加せずにグラフデータのみ

  25. 25

    d3jsのデータオブジェクトを参照できません

  26. 26

    d3jsを使用してファントでjsonデータをプロットする

  27. 27

    d3jsツリーデザインにアプローチする方法

  28. 28

    配列データから折れ線グラフをプロットするD3JS(データは未定義のエラーです)

  29. 29

    postgresデータベースから選択したデータをjsonまたはcsvに変換して、d3js libで使用する方法は?

ホットタグ

アーカイブ