nvd3.js графики как установить высоту и ширину графика nvd3




graph d3 (2)

Я пытаюсь установить ширину и высоту мультибаровой диаграммы nvd3 программно

chart.width(600);
chart.height(400);

Смотрите пример здесь:

http://jsfiddle.net/hPgyq/20/

Как вы можете видеть, это действительно портит график. Я знаю, что могу сделать это с помощью CSS:

#chart svg {
  width: 600px;
  height: 400px;
}

но я думал, что это также возможно, используя функции width () и height () на графике. Я что-то не так делаю или неправильно использую две функции?


Да, это возможно, как вы указали ширину и высоту диаграммы, вы должны использовать d3.select и установить его атрибут width & height.

Изменения в коде приведены ниже, и здесь есть версия кода

function visualizeData(data) {
    nv.addGraph(function() {
        var width = 600, height = 400;
        chart = nv.models.multiBarChart().x(function(d) {
            return d.x;
        }).y(function(d) {
            return d.y;
        }).color(['#aec7e8', '#7b94b5', '#486192']).stacked(true)
        //.margin({top:150,right:150,bottom:150,left:150})
        .width(width).height(height);

        chart.multibar.hideable(false);

        chart.xAxis.showMaxMin(true).tickFormat(d3.format(',f'));

        chart.yAxis.tickFormat(d3.format(',.1f'));

        d3.select('#chart svg').datum(data).transition().duration(500).call(chart).style({ 'width': width, 'height': height });

        nv.utils.windowResize(chart.update);

        return chart;
    });
}

Для версии AngularJs ( angular-nvd3 ) мне пришлось добавить height либо в параметрах диаграммы, либо в качестве атрибута:

chart.html

<nvd3 options='vm.chartOptions' data='vm.chartData' height="250" config="vm.chartConfig">
    </nvd3>

chart.controller.js

vm.chartOptions = {
    chart : {
        height : 250,
        type : "pieChart",
        donut : true,
        showLegend : false,
        //The rest of the configuration
};

Как сказано в комментариях, первый, кажется, контролирует высоту внутреннего svg, а второй - глобальную высоту диаграммы.