Как масштабировать столбцы диаграммы, чтобы она отображала полный график с данными - PullRequest
0 голосов
/ 04 июня 2019

Я создал простую диаграмму с помощью d3.js. Моя проблема, моя полная диаграмма не показана, но она обрезана вправо. Только 16 из 20 баров показаны

Я думаю, это проблема масштабирования, но я не знаю, как ее исправить. Если я увеличу ширину, это покажет мне больше полос, но я бы хотел сохранить исходную ширину. Вот мой код:

{#Creating a barchart#}
var dataset = [133,131,111,345,665,665,454,44,4,235....]; //These are the bars

var svgWidth = 900, svgHeight = 400, barPadding = 10;
var barWidth = (svgWidth / dataset.length * 2 );

var svg = d3.select('svg')
    .attr("width", svgWidth)
    .attr("height", svgHeight);

var yScale = d3.scaleLinear()
    .domain([0, d3.max(dataset)])
    .range([0, svgHeight]);

var barChart = svg.selectAll("rect")
    .data(dataset)
    .enter()
    .append("rect")
    .attr("y", function(d) {
         return svgHeight - yScale(d)
    })
    .attr("height", function(d) {
        return yScale(d);
    })
    .attr("width", barWidth - barPadding)
    .attr("transform", function (d, i) {
        var translate = [barWidth * i, 0];
        return "translate("+ translate +")";
    });

var text = svg.selectAll("text")
    .data(dataset)
    .enter()
    .append("text")
    .text(function(d) {
        return d;
    })
    .attr("y", function(d, i) {
        return svgHeight - d - 2;
    })
    .attr("x", function(d, i) {
        return barWidth * i;
    })
    .attr("fill", "black");

</script>

Любая помощь высоко ценится! Заранее спасибо!

1 Ответ

1 голос
/ 04 июня 2019

Попробуйте удалить умножение на 2 в формуле barWidth

var barWidth = svgWidth / dataset.length;
...