2016-04-23 5 views
0

地面にd3.jsと入力しています。私に先んじて急いで学ぶ曲線がありますが、私が試みた第2の簡単なチュートリアルにはまだまだ立ち往生するとは思っていませんでした。仲間のプログラマーに最大限の寄与をさせるための変更が今ではあります!シンプルで怒っているd3.jsの例

私は、サンプルと事実上同じで、私のデータを使って簡単なsvg棒グラフを取得しようとしています。

ボストックのデータ

name value 
Locke 4 
Reyes 8 
Ford 15 
Jarrah 16 
Shephard 23 
Kwon 42 

私のデータ私たちの第二の列が同じ名前を持つ

year value 
year2013 2476 
year2014 7215 
year2015 23633 
year2016thru229 21752 

注意。どちらも数字を含んでいます。私は自分のデータセットに同じ名前を付けました。したがって、私は事を変えずに(下)彼のコードを実行することができるはずですが、それは、これを返します。

Unexpected value NaN parsing width attribute. 

...uments);null==e?this.removeAttribute(n):this.setAttribute(n,e)}function 

d3.min.js (line 1, col 2575) 

Unexpected value NaN parsing x attribute. 

...uments);null==e?this.removeAttribute(n):this.setAttribute(n,e)}function 

d3.min.js (line 1, col 2575) 

彼のコードだけでなく、チュートリアルhereです。

+0

エリックの答えは有効なものですが、私はまだあなたのTSVが機能しなかった理由について興味があります。それぞれのフィールドの間にタブストップを置いたのですが、各行の後にキャリッジリターンがありますか? –

+0

私はドライブから直接ダウンロードしたファイル自体ではなく、ディレクトリに問題があると思われます(実際に私がそこに入力したものにもかかわらず、Bostockと同じ列名を持っていました)。明確にするには、スクリプトのsrcタグに短縮されたファイルパスを入力すると、index.htmlと同じフォルダ内の.jsファイルに自動的に誘導されます。オンラインでファイルをホストするのはどうですか? – koby

+0

私はあなたの質問を理解していませんでした:あなたはスクリプト自体(スクリプトタグ内)について話しているのですか、あなたが読み込んだCSVまたはTSVについてですか? CSVまたはTSVについて話している場合、同じ発信元ポリシーのため、同じドメインにいなければなりません。https://en.wikipedia.org/wiki/Same-origin_policy –

答えて

1

データを正しい形式で入力しているわけではありません。

https://jsfiddle.net/guanzo/kdcLj5jj/1/

var data = [ 
{year:'year2013',value:2476}, 
{year:'year2014',value:7215}, 
{year:'year2015',value:23633}, 
{year:'year2016thru229',value:21752} 
] 

var width = 420, 
    barHeight = 20; 

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

var chart = d3.select(".chart") 
    .attr("width", width); 

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

    chart.attr("height", barHeight * data.length); 

    var bar = chart.selectAll("g") 
     .data(data) 
    .enter().append("g") 
     .attr("transform", function(d, i) { return "translate(0," + i * barHeight + ")"; }); 

    bar.append("rect") 
     .attr("width", function(d) { return x(d.value); }) 
     .attr("height", barHeight - 1); 

    bar.append("text") 
     .attr("x", function(d) { return x(d.value) - 3; }) 
     .attr("y", barHeight/2) 
     .attr("dy", ".35em") 
     .text(function(d) { return d.value; }); 


function type(d) { 
    d.value = +d.value; // coerce to number 
    return d; 
} 
関連する問題