J'utilise le module angulaire angular-chart.js . Il est simple de travailler avec et très intelligent. Mais j'ai remarqué que je ne pouvais pas changer les width
et height
des graphiques. J'ai lu quelque part que je dois définir la taille du graphique comme suit:
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
}
}
];
/************************************************/
});
La vue:
<canvas id="bar"
class="chart chart-bar"
chart-data="dataChart"
chart-labels="labels"
chart-click="onClick"
chart-options="options">
</canvas>
Est-ce que quelqu'un sait comment définir les width
et height
dans angular-chart.js?
Ok j'ai essayé cette solution et ça marche.
<canvas id="bar"
height="100"
width="100"
class="chart chart-bar"
chart-data="dataChart"
chart-labels="labels"
chart-click="onClick"
chart-options="options">
</canvas>
Ou définir la taille comme un style dans une classe CSS.
Vous pouvez également envelopper le <canvas>
dans un <div>
, comme suit:
<div style="height:300px;width:300px;">
<canvas
class="chart chart-radar"
chart-data="$ctrl.data"
chart-options="options"
chart-labels="$ctrl.labels"></canvas>
</div>
Régler width
et height
comme dans les autres réponses ne fonctionnait pas pour moi.
Pour définir la hauteur des graphiques en fonction de la taille de l'écran, j'utilise ce code:
$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>
J'espère que ces codes aideront.
Le problème est que les valeurs des attributs hauteur et largeur sont stockées dans le graphique et ne sont pas mises à jour de la même manière que les autres attributs. Pour résoudre ce problème, vous devez ajouter un écouteur à l'événement create et modifier manuellement la hauteur dans l'objet graphique.
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;
});
Vous vous attendriez à ce que $scope.chart.height
change pendant une recherche AJAX ou quelque chose qui apportera de nouvelles données.