D3js折れ線グラフが値とx軸をレンダリングできないのはなぜですか?

スティーブマーフィー

National WeatherServiceからのデータの折れ線グラフを作成しようとしています。グラフのx軸には、文字列の時間値( "today"、 "tonight"など)が表示されます。y軸はその日の高温である必要があります。

ただし、温度は表示されず、すべてのテキストがそれ自体に重なるように、x軸はすべて左揃えになっているようです。

コンソールエラーも発生します:

この行.attr("d", valueline);は次のエラーを生成します:

Error: <path> attribute d: Expected number, "MNaN,111.86440677…"

この行.call(d3.axisBottom(x).ticks(10))は次のエラーを生成します:

Error: <g> attribute transform: Expected number, "translate(NaN,0)".

Error: <path> attribute d: Expected number, "MNaN,6V0.5HNaNV6".

これが私のコードです。これは、いくつかのWebサイトから入手したサンプルのコードを組み合わせたものです。

<!DOCTYPE html>
<meta charset="utf-8">

<!-- Load d3.js -->
<script src="https://d3js.org/d3.v4.js"></script>


<div id="myChart"></div>

<style> /* set the CSS */
    .line {
      fill: none;
      stroke: steelblue;
      stroke-width: 2px;
    }
    body {
      font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
      font-weight: 400;
      font-size: 24px;
    }
    
</style>

<body>
  <script>
  // class to hold day data
  let DayData = class {
    constructor(name, high) {
      this.name = name;
      this.high = high;
    }
  }

  let daysData = new Array();

  var width = 0;
  var height = 0;
  // set the dimensions and margins of the graph
  var margin = {top: 10, right: 30, bottom: 60, left: 60},
      width = 1000 - margin.left - margin.right, //460
      height = 400 - margin.top - margin.bottom;

  /*------------------------------------------------------*/
  // get the data
  /*------------------------------------------------------*/
  d3.json("https://api.weather.gov/gridpoints/BOU/69,50/forecast", 

      function(resp) {

          let data = resp['properties']['periods'];
          console.log(data);

          // structure the data
          data.forEach(
          function(day) {    
              dayData = new DayData(day.name, day.temperature);
              daysData.push(dayData);
          });

          data = daysData;

          // set the ranges
          var x = d3.scaleBand().range(0, width);
          var y = d3.scaleLinear().range([height, 0]);


          // define the line
          var valueline = d3.line()
              .x(function(d) {
                return x(d.name); 
              })
              .y(function(d) {
                return y(d.high); 
              });

          // append the svg object to the body of the page
          var svg = d3.select("#myChart")
            .append("svg")
              .attr("width", width + margin.left + margin.right)
              .attr("height", height + margin.top + margin.bottom)
            .append("g")
              .attr("transform",
                    "translate(" + margin.left + "," + margin.top + ")");

          // scale the range of data
          x.domain(data.map(function(d) { 
            return d.name
          }));

          y.domain([0, d3.max(data, function(d) { 
            return d.high 
          })]);


          // Add the valueline path.
          svg.append("path")
          .data([data])
          .attr("class", "line")
          .attr("d", valueline);


      // Add the x Axis
      svg.append("g")
        .attr("class", "axis")
        .attr("transform", "translate(0," + height + ")")
        .call(d3.axisBottom(x).ticks(10))
        .selectAll("text")  
          .style("text-anchor", "end")
          .attr("dx", "-.8em")
          .attr("dy", ".15em")
          .attr("transform", "rotate(-65)");


          // text label for the x axis
          svg.append("text")             
              .attr("transform",
              "translate(" + (width/2) + " ," + 
              (height + margin.top + 20) + ")")
              .style("text-anchor", "middle")
              .text("Day");

          // Add the y Axis
          svg.append("g")
          .call(d3.axisLeft(y));

          // text label for the y axis
          svg.append("text")
              .attr("transform", "rotate(-90)")
              .attr("y", 0 - margin.left)
              .attr("x",0 - (height / 2))
              .attr("dy", "1em")
              .style("text-anchor", "middle")
              .text("Temperature");      


  }); // end get json weather

  </script>
</body>

助けてください、ありがとう。

ロドリゴディヴィーノ

.range()d3スケールメソッドは、スケールの出力値を定義する配列を受け入れます。

この行で:

  //set the ranges
   var x = d3.scaleBand().range(0, width);
   var y = d3.scaleLinear().range([height, 0]);

Yスケール範囲が正しく定義されているが、X範囲にが欠落しているため[ ]、配列が2つの無効なパラメーターになっていること注意してください。スケールの出力が無効であるため、パスでNaNエラーが発生し、x軸が正しくレンダリングされません。

範囲を配列として宣言すると、エラーが修正されます。

   var x = d3.scaleBand().range([0, width]);

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

折れ線グラフの上と下の両方に黒い領域がレンダリングされるのはなぜですか?

分類Dev

折れ線グラフの X 軸と Y 軸で使用される Excel 行を指定できないのはなぜですか?

分類Dev

同じグループが正しい折れ線グラフと対応する範囲グラフをレンダリングしないのはなぜですか?

分類Dev

D3jsがグラフを正しくレンダリングしない:すべてが線として表示される

分類Dev

D3jsを使用して複数の折れ線グラフで欠落値を表示しない方法

分類Dev

React js、openの値を変更したときにコンポーネントが再レンダリングされないのはなぜですか?

分類Dev

D3マルチ折れ線グラフがX軸の値で正しく表示されない

分類Dev

Chart.jsでレンダリングされた折れ線グラフのy軸の最大値を取得します

分類Dev

このd3.js散布図でラベル/テキストがレンダリングされないのはなぜですか?

分類Dev

等高線グラフが1つの軸の折れ線グラフと重ならないようにするにはどうすればよいですか?

分類Dev

AjaxでプルしたときにHighChartsがレンダリングされないのはなぜですか?

分類Dev

不連続な軸を作成しようとすると、バープロットが折れ線グラフに変わるのはなぜですか?

分類Dev

折れ線グラフが表示されないのはなぜですか(Chart.JS)?

分類Dev

d3.jsでJSON配列をフィルタリングできないのはなぜですか?

分類Dev

MPAndroidChartにX軸の値を表示しているときに、折れ線グラフにゼロ値を描画しないようにするにはどうすればよいですか?

分類Dev

d3.js折れ線グラフに線が表示されない(軸のみが表示されます)

分類Dev

グラフの折れ線グラフが折れ線グラフを正しくレンダリングしない

分類Dev

D3 が TopoJSON を正しくレンダリングしないのはなぜですか?

分類Dev

コントローラが参照されているときにangularjsコードがレンダリングされないのはなぜですか?

分類Dev

チャートjsを使用して、1つのグラフに動的なx軸とy軸を持つ複数の折れ線グラフを作成するにはどうすればよいですか?

分類Dev

d3折れ線グラフにランダムな水平線が表示されていますか?

分類Dev

折れ線グラフに10進数のX軸を設定することはできますか?

分類Dev

y軸の値が折れ線グラフの実際の点から上にシフトするのはなぜですか?

分類Dev

D3.js折れ線グラフ-日付でx軸を制御する

分類Dev

ビューポートが折れ線グラフの最後のX値に移動しないのはなぜですか?

分類Dev

関数が条件付きで画像をレンダリングできないのはなぜですか?

分類Dev

文字がレンダリングされないのはなぜですか

分類Dev

CSSがレンダリングされないのはなぜですか?

分類Dev

CSSがレンダリングされないのはなぜですか?

Related 関連記事

  1. 1

    折れ線グラフの上と下の両方に黒い領域がレンダリングされるのはなぜですか?

  2. 2

    折れ線グラフの X 軸と Y 軸で使用される Excel 行を指定できないのはなぜですか?

  3. 3

    同じグループが正しい折れ線グラフと対応する範囲グラフをレンダリングしないのはなぜですか?

  4. 4

    D3jsがグラフを正しくレンダリングしない:すべてが線として表示される

  5. 5

    D3jsを使用して複数の折れ線グラフで欠落値を表示しない方法

  6. 6

    React js、openの値を変更したときにコンポーネントが再レンダリングされないのはなぜですか?

  7. 7

    D3マルチ折れ線グラフがX軸の値で正しく表示されない

  8. 8

    Chart.jsでレンダリングされた折れ線グラフのy軸の最大値を取得します

  9. 9

    このd3.js散布図でラベル/テキストがレンダリングされないのはなぜですか?

  10. 10

    等高線グラフが1つの軸の折れ線グラフと重ならないようにするにはどうすればよいですか?

  11. 11

    AjaxでプルしたときにHighChartsがレンダリングされないのはなぜですか?

  12. 12

    不連続な軸を作成しようとすると、バープロットが折れ線グラフに変わるのはなぜですか?

  13. 13

    折れ線グラフが表示されないのはなぜですか(Chart.JS)?

  14. 14

    d3.jsでJSON配列をフィルタリングできないのはなぜですか?

  15. 15

    MPAndroidChartにX軸の値を表示しているときに、折れ線グラフにゼロ値を描画しないようにするにはどうすればよいですか?

  16. 16

    d3.js折れ線グラフに線が表示されない(軸のみが表示されます)

  17. 17

    グラフの折れ線グラフが折れ線グラフを正しくレンダリングしない

  18. 18

    D3 が TopoJSON を正しくレンダリングしないのはなぜですか?

  19. 19

    コントローラが参照されているときにangularjsコードがレンダリングされないのはなぜですか?

  20. 20

    チャートjsを使用して、1つのグラフに動的なx軸とy軸を持つ複数の折れ線グラフを作成するにはどうすればよいですか?

  21. 21

    d3折れ線グラフにランダムな水平線が表示されていますか?

  22. 22

    折れ線グラフに10進数のX軸を設定することはできますか?

  23. 23

    y軸の値が折れ線グラフの実際の点から上にシフトするのはなぜですか?

  24. 24

    D3.js折れ線グラフ-日付でx軸を制御する

  25. 25

    ビューポートが折れ線グラフの最後のX値に移動しないのはなぜですか?

  26. 26

    関数が条件付きで画像をレンダリングできないのはなぜですか?

  27. 27

    文字がレンダリングされないのはなぜですか

  28. 28

    CSSがレンダリングされないのはなぜですか?

  29. 29

    CSSがレンダリングされないのはなぜですか?

ホットタグ

アーカイブ