我正在使用角度模块angular-chart.js。它很简单,非常聪明。但我注意到我无法更改图表的width
和height
。在某处,我已经知道我必须按如下方式定义图表的大小:
var vm = $scope;
vm.labels = [];
vm.data = [];
CrudService.getData(selDate).$promise.then(
function (response) {
angular.forEach(response, function (val) {
val.datum = $filter('date')(val.datum, 'dd.MM.yyyy');
vm.labels.push(val.datum);
vm.data.push(val.grade);
});
vm.dataChart = [vm.data];
/* This is the important part to define the size */
vm.options = [
{
size: {
height: 200,
width: 400
}
}
];
/************************************************/
});
观点:
<canvas id="bar"
class="chart chart-bar"
chart-data="dataChart"
chart-labels="labels"
chart-click="onClick"
chart-options="options">
</canvas>
有谁知道如何在angular-chart.js中定义width
和height
?
答案 0 :(得分:11)
好的我已经尝试过这个解决方案并且有效。
<canvas id="bar"
height="100"
width="100"
class="chart chart-bar"
chart-data="dataChart"
chart-labels="labels"
chart-click="onClick"
chart-options="options">
</canvas>
或者将大小定义为CSS类中的样式。
答案 1 :(得分:6)
您也可以将<canvas>
打包成<div>
,如下所示:
<div style="height:300px;width:300px;">
<canvas
class="chart chart-radar"
chart-data="$ctrl.data"
chart-options="options"
chart-labels="$ctrl.labels"></canvas>
</div>
在其他答案中设置width
和height
并不适用于我。
答案 2 :(得分:4)
要根据屏幕大小定义图表的高度,我使用以下代码:
$scope.height_chart = window.innerHeight*0.7;
<canvas height="{{height_chart}}" class="chart chart-line" data="weight.data" labels="weight.labels" series="weight.series"></canvas>
我希望这些代码会有所帮助。
答案 3 :(得分:1)
问题是高度和宽度属性值存储在图表中,并且不会以与其他属性相同的方式更新。要解决此问题,您必须向create事件添加一个侦听器,并手动更改图表对象中的高度
HTML:
<canvas
id="chart"
class="chart chart-horizontal-bar"
chart-data="chart.data"
chart-labels="chart.data.labels"
chart-series="chart.series"
chart-options="chart.options"
chart-colors="chart.colors"
height="{{ compareChart.height }}"
width="{{ compareChart.width }}"
></canvas>
JS:
$scope.$on('chart-create', function (event, chart) {
chart.chart.height = $scope.chart.height;
});
您希望在AJAX查找期间更改$scope.chart.height
或者会引入新数据。
答案 4 :(得分:0)
图表使用其父容器更新画布的渲染和显示大小。但是,此方法要求容器相对放置并且仅专用于图表画布。然后可以通过设置容器尺寸的相对值来实现响应性