polygons

by Igor Cuckovic

JavaScript

var width = 500,
    height = 500,
    dataArray = [10, 30, 300, 88, 120, 0, 30];

var max = d3.max(d3.values(dataArray));
var margin = {top: 50, right: 50, bottom: 50, left: 50};

var svgHeight = height - (margin.top + margin.bottom);

var scale = d3.scale.linear()
                .domain([0, max])
                .range([0, svgHeight]);

var svg = d3.select("body").append("svg")
                .attr({
                        "width": width,
                        "height": height                
                });

function drawFunction (expandedLine, stackNumber, item) {
   // console.log(expandedLine, stackNumber);
    
    var mask = svg.append("g").attr({
    "transform": "translate(0, 50)"
    });
    var points = mask.selectAll(".points")
    .data(expandedLine)
    .enter()
    .append("g")
    .attr("class", ".points")
    .attr("transform", function (d, i) {return "translate(" + 50 * stackNumber  + "," + d + ")";});
    
    var label = mask.append("g").append("text").text(item)
    .attr("text-anchor", "middle")
    .attr("transform", function () {return "translate(" + (50 * stackNumber + 13) + "," + (max - (item + 5)) + "              )";});
    
    if (item) {
        v(points, l[0]);
    } else {
       var points0 = mask.append("g")
            .attr("class", ".points")
            .attr("transform", function () {return "translate(" + (50 * stackNumber ) + "," + max + " )";});
        
        y(points0, l[0]);
    }
}


// test
l = ["#AE3E33", "#1E6098"];

function g(t) {
    return d3.rgb(t).hsl().brighter(0.5).toString();
}

function v(t, e) {
    var a = t.append("g");
    var n = g(e);
    a.append("polygon").attr("points", "13.59,5.745 0,2.873 13.59,0 27.179,2.873").style("fill", n);
    a.append("polygon").attr("points", "27.179,4.873 13.59,7.745 0,4.873 0,2.873 13.59,5.745 27.179,2.8733").style("fill", e);
    return a;
}

function y(t, e) {
    var a = t.append("g").style("opacity", 0.5);
    a.append("polygon").attr("points",...