D3.js数字不在twitter bootstrap的div部分

时间:2015-03-04 16:26:57

标签: d3.js twitter-bootstrap-3

代码如下:我正在尝试创建两个“div”。每个div都有一张图片。但是,所有文本后图片都会折叠在一起。他们不会留在他们的个人div。

<div class="container">
    <div class ="row">
        <h1> Title </h1>
        <script src="http://d3js.org/d3.v3.min.js"></script>
        <script type="text/javascript" > 


        var margin = {top: 20, right: 30, bottom: 30, left: 100},
            width = 800 - margin.left - margin.right,
            height = 600 - margin.top - margin.bottom;

        var formato = d3.format("0.0");

        var x = d3.scale.ordinal()
            .rangeRoundBands([0, width], .1);

        var y = d3.scale.linear()
            .range([height, 0]);

        var xAxis = d3.svg.axis()
            .scale(x)
            .orient("bottom")

        var yAxis = d3.svg.axis()
            .scale(y)
            .orient("left")
            .tickFormat(formato);

        var svg = d3.select("body").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 + ")");

        var dataFile_1 = "data.csv"

        d3.csv(dataFile_1, function(error1, data1) {

            data1.forEach(function(d) {
               d.petitionRate = +d.petitionRate;
            });

            x.domain(data1.map(function(d) { return d.state; }));
            y.domain([0, d3.max(data1, function(d) { return d.petitionRate; })]);

            svg.append("g")
               .attr("class", "x axis")
               .attr("transform", "translate(0," + height + ")")
               .call(xAxis);

            svg.append("g")
               .attr("class", "y axis")
               .call(yAxis)
               .append("text")
               .attr("transform", "rotate(-90)")
               .attr("y", 6)
               .attr("dy", ".71em")
               .style("text-anchor", "end")
               .text("Participation rate");

            svg.selectAll(".bar")
               .data(data1)
               .enter().append("rect")
               .attr("class", "bar")
               .attr("x", function(d) { return x(d.state); })
               .attr("width", x.rangeBand())
               .attr("y", function(d) { return y(d.petitionRate); })
               .attr("height", function(d) { return height - y(d.petitionRate)});    
</div>
<div class ="row">

    If I put a picture here as the first one. Both of them do not stay in their div.

</div>

</div>

请帮我理解这里的问题。

感谢。

1 个答案:

答案 0 :(得分:2)

这一行:

var svg = d3.select("body").append("svg")

d3s svg附加到html正文的结尾。如果你想在

中使用svg
<div class ="row">
直接在JavaScript代码之前的

执行此操作:

<div class ="row" id="visRow">

然后追加到那个div:

var svg = d3.select("#visRow").append("svg")