2017-09-05 9 views
0

私はNVD3で作業しており、グラフの応答性に問題があります。NVD3チャートを反応的にするには?

これまではいくつかのグラフを作成していましたが、これらは常にコンテナをオーバーフローさせ、yAxisラベルを切り捨てたり、xAxisの四肢をカットしたりしていました。

ここではY軸が切断されているチャートの1の画像です:

enter image description here

これらは、私はチャートを作成するために使用しているコードスニペットです:

nv.addGraph(function() { 
 
    chart = nv.models.lineChart() 
 
    .useInteractiveGuideline(false); 
 

 
    if (data.hasOwnProperty("key") && isColumnTotalChart || isRowTotalChart) { 
 
    chart.xAxis 
 
     .axisLabel(data.chartDataset.key); 
 
    } 
 

 
    chart.xAxis.tickValues(data.chartLabelIndexes) 
 
    .tickFormat(function(d) { 
 
     return data.chartLabels[d]; 
 
    }); 
 

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

 
    if (chartData.labels.length > 10) { 
 
    chart.xAxis.rotateLabels(-90); 
 
    } 
 

 
    chart.xAxis.showMaxMin(true); 
 

 
    d3.selectAll(chartSelectedSvg + " > *").remove(); 
 

 
    d3.select(chartSelectedSvg) 
 
    .datum(data.chartDataset) 
 
    .transition().duration(500) 
 
    .call(chart); 
 

 
    nv.utils.windowResize(chart.update); 
 

 
    return chart; 
 
});
div>svg { 
 
    min-height: 30vh; 
 
    margin: 0 auto; 
 
    display: block; 
 
}
<div ng-show="chartColumnData.data.length !== 0"> 
 
    <div id="chartTotalColumns" ng-show="chartColumnData.data.length !== 0"> 
 
    <svg></svg> 
 
    </div> 
 
    <div layout="row" layout-padding layout-align="center center" ng-show="chartColumnData.data.length !== 0"> 
 
    </div> 
 
</div>

設定しようとしましたviewBoxおよびpreserveAspectRatio SVGのプロパティは使用できません。

また、私は失敗したこれらの質問で提案されたものを試してみました:

Responsive pie chart using NVD3

NVD3 Chart responsive issue

How to make a <svg> element expand or contract to its parent container?

あなたはこれらのチャートが応答にする方法についてどのような提案を持っていますか?

ありがとうございます。

答えて

1

これを読んだ後:

Y axis label not displaying large numbers - Multi-Bar Chart

私はそれを把握するために管理している:単純に余白を調整しても問題が解決します。

According to the documentation、すべてのグラフの余白を調整するために、あなたはこのコード行を使用する必要がありますが:あなたが唯一のマージンを設定する必要がある場合

chart.margin({"left":5,"right":5,"top":10,"bottom":10})

、あなたが行う必要があるでしょう:

chart.margin().left = 50;

今のチャートは、次のようになります。 enter image description here

関連する問題