web-dev-qa-db-ja.com

nvd3チャートの高さと幅を設定する方法

私はプログラムでnvd3マルチバーチャートの幅と高さをプログラムで設定しようとしています

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

こちらの例をご覧ください。

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

あなたが見ることができるように、これは本当にチャートを台無しにします。私はこれがCSSでできることを知っています:

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

しかし、これはチャートのwidth()およびheight()関数を使用しても可能だと思いました。ここで何か間違ったことをしていますか、それとも2つの機能を誤って使用していますか?

22
lostdorje

はい、可能です。チャートの幅と高さを指定したように、d3.selectおよび幅と高さの属性を設定します。

コードへの変更は以下にあり、コードのバージョンがあります here

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;
    });
}
34
shabeer90

AngularJs バージョン( angular-nvd )の場合、チャートオプションまたは属性として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の高さを制御し、2番目はグローバルチャートの高さを制御しているようです。

0
Xtreme Biker