2017-04-24 1 views
0

tutorial で見たマップを複製しようとしていますが、エディタのコードが彼のものと同じであっても正しく表示されないようです。私のコードをデバッグしようとすると、次のエラーが発生します。d3.scale.logが未定義のプロパティログを読み取ることができません

d3.scale.logで未定義のプロパティログを読み取ることができません。あなたはD3のV4を使用しているのに対し、

<!DOCTYPE html> 
<html> 
<head> 
<meta charset="utf-8"> 
    <title>D3!!</title> 
    </head> 
    <body> 
<script src="https://d3js.org/d3.v4.min.js"></script> 
<script 
src="https://cdnjs.cloudflare.com/ajax/libs/leaflet/1.0.3/leaflet.js"></script> 
<script src="https://d3js.org/d3-selection-multi.v0.4.min.js"></script> 
<script> 

var outerWidth=500; 
var outerheight=250; 
var margin={left:-50, top:0, right:-50, bottom:0}; 
var xColumn="longitude"; 
var yColumn="latitude"; 
var rColumn="population"; 
var peoplePerPixel=1000000; 
var innerWidth=outerWidth - margin.left - margin.right; 
var innerHeight=outerheight - margin.top - margin.bottom; 
var svg=d3.select("body").append("svg") 
.attr("width", outerWidth) 
.attr("height", outerheight); 

var g= svg.append("g") 
    .attr("transform", "translate (" + margin.left + "," +margin.top +")"); 
var xScale= d3.scale.log() 
    .range([0,innerWidth]); 
var yScale= d3.scale.log() 
    .range([innerHeight,0]); 
var rScale= d3.scale.sqrt(); 
function render (data){ 
xScale.domain(d3.extent(data, function (d){return d[xColumn]; })); 
yScale.domain(d3.extent(data, function (d){return d[yColumn]; })); 
rScale.domain([0, d3.max(data, function (d){return d[xColumn]; })]); 

var circles= svg.selectAll("circle").data(data); 
circles.enter().append("circle"); 
circles 
.attr("cx", function(d){ return xScale(d[xColumn]);}) 
.attr("cy", function(d){ return yScale(d[yColumn]);}) 
.attr("r", function(d){ return rScale(d[rColumn]);}); 
circles.exit().remove(); 
    } 
function type(d) { 
    d.latitude=+d.latitude; 
    d.longitude=+d.longitude; 
    d.population=+d.population; 
    return d; 
    } 

d3.csv("map_cities.csv",type, render) 


</script> 
</body> 
</html> 

答えて

1

チュートリアルでは、D3のv3.5.5を使用しています。新しいバージョンではES6モジュールが使用されていたため、以前のバージョンの名前空間はフラットにしなければなりませんでした。変更履歴は、あなたのケースの詳細を持っている:

Scales (d3-scale)

偉大な名前空間の平坦化に従い:

[&hellip;]

明示的にあなたの質問には言及しなかったが、私はまた、あなたがに実行するようにした次の問題だろうd3.scale.sqrtの調整が含まれています。

関連する問題