J'utilise Angular-Chart.js (AngularJS Chart.js version) pour créer un graphique à barres. Le graphique fonctionne avec les options sauf pour les couleurs.
Même si je les mets, il est indiqué dans la documentation , ils restent gris.
<div class="graph-display" ng-controller="chartController">
<canvas class="chart chart-bar"
data="bilans.data"
labels="bilans.labels"
series="bilans.series"
options="{
scaleShowHorizontalLines: true,
scaleShowVerticalLines: false,
tooltipTemplate: '<%= value %> $',
responsive: true
}"
colours="{
fillColor: 'rgba(47, 132, 71, 0.8)',
strokeColor: 'rgba(47, 132, 71, 0.8)',
highlightFill: 'rgba(47, 132, 71, 0.8)',
highlightStroke: 'rgba(47, 132, 71, 0.8)'
}"
></canvas>
</div>
En fait, les options fonctionnent mais les couleurs ne le sont pas. Est-ce que je fais quelque chose de mal?
Votre objet colours
devrait être déclaré comme un tableau
"colours": [{
fillColor: 'rgba(47, 132, 71, 0.8)',
strokeColor: 'rgba(47, 132, 71, 0.8)',
highlightFill: 'rgba(47, 132, 71, 0.8)',
highlightStroke: 'rgba(47, 132, 71, 0.8)'
}];
Pour plus d'informations, reportez-vous à cet article / ceci aussi.
Pour les versions plus récentes, voir la réponse de eli0tt , car les noms des paramètres ont changé.
J'avais le même problème. Dans la documentation, il est dit d'utiliser des "couleurs", mais une fois que j'ai mis à jour mon code HTML pour:
chart-colours
avec un tableau angulaire de:
$scope.colours = ['#72C02C', '#3498DB', '#717984', '#F1C40F'];
Ça a marché!
Il semble que la dénomination ait encore changé. J'utilise angular-chart.js 1.0.3 et la gestion des couleurs pour les graphiques à barres fonctionne comme suit:
colors:[{
backgroundColor:"#F00",
hoverBackgroundColor:"#FF0",
borderColor:"#0F0",
hoverBorderColor:"#00F"
}];
Dans la balise canvas, le nom de l'attribut est chart-colors
Comme @pankajparkar a dit. En ajoutant simplement que vous pouvez également transmettre des couleurs html et angular-chart.js, les objets de couleur seront définis correctement dans rgba avec les nuances appropriées, par exemple $scope.colors = ['#FD1F5E','#1EF9A1','#7FFD1F','#68F000'];
En 2017, les diagrammes angulaires fonctionnaient avec le code suivant.
que les noms des éléments sont changés. Tiré du code source du diagramme angulaire.
de plus, dès que vous manquerez de couleurs, le diagramme angulaire les générera pour vous. Cela inclut une opacité de 0,2 pour les couleurs d'arrière-plan.
Si vous spécifiez #hex couleurs, l'opacité sera ajoutée.
Spécification de couleur via global.
app.config(['ChartJsProvider', function (ChartJsProvider) {
// Using ChartJsProvider.setOptions('bar', { didn't seem to work for me.
// Nor did $scope.chartColors. Although I only tried that in the controller.
Chart.defaults.global.colors = [
{
backgroundColor: 'rgba(78, 180, 189, 1)',
pointBackgroundColor: 'rgba(78, 180, 189, 1)',
pointHoverBackgroundColor: 'rgba(151,187,205,1)',
borderColor: 'rgba(0,0,0,0',
pointBorderColor: '#fff',
pointHoverBorderColor: 'rgba(151,187,205,1)'
}, {
backgroundColor: 'rgba(229, 229, 229, 1)',
pointBackgroundColor: 'rgba(229, 229, 229, 1)',
pointHoverBackgroundColor: 'rgba(151,187,205,1)',
borderColor: 'rgba(0,0,0,0',
pointBorderColor: '#fff',
pointHoverBorderColor: 'rgba(151,187,205,1)'
}
...
Dans le code source, le code de sélection des couleurs est actuellement. Les couleurs définies via les options Chart.js sont réinitialisées ici (je n'ai pas réussi à le faire fonctionner).
Choisissez les couleurs selon le code source angular-chart.js:
var colors = angular.copy(scope.chartColors ||
ChartJs.getOptions(type).chartColors ||
Chart.defaults.global.colors
Oui, si vous ne spécifiez pas d'objet, l'opacité est définie pour vous. De angular-chart.js:
function convertColor (color) {
if (typeof color === 'object' && color !== null) return color;
if (typeof color === 'string' && color[0] === '#') return getColor(hexToRgb(color.substr(1)));
return getRandomColor();
}
...
function getColor (color) {
return {
backgroundColor: rgba(color, 0.2),
pointBackgroundColor: rgba(color, 1),
pointHoverBackgroundColor: rgba(color, 0.8),
borderColor: rgba(color, 1),
pointBorderColor: '#fff',
pointHoverBorderColor: rgba(color, 1)
};
}
Tu voulais dire: "couleurs"
$scope.colours = ['#FD1F5E','#1EF9A1','#7FFD1F','#68F000'];
Nous pouvons également voir les autres attributs que nous pouvons modifier, tels que: légende, série, survol. À côté de chaque graphique, vous pouvez voir une option appelée "paramètres", c'est tout ce que vous pouvez changer.
Avec la dernière version, $ scope.colors ne semble pas fonctionner. Vous devez utiliserchart-dataset-override="colors"
DEMO
angular.module("app", ["chart.js"]).controller("DoughnutCtrl", function ($scope) {
$scope.results = {'1': 0, '2': 0, '3': 0, '4': 0, '5': 0, '6': 0, '7': 0, '8': 0, '9': 0, '10': 0};
$scope.labels = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10'];
$scope.data = [
[1, 3, 5, 8, 9, 10, 11, 12, 33, 5]
];
$scope.colors = [{
fillColor: 'rgba(59, 89, 152,0.2)',
strokeColor: 'rgba(59, 89, 152,1)',
pointColor: 'rgba(59, 89, 152,1)',
pointStrokeColor: '#fff',
pointHighlightFill: '#fff',
pointHighlightStroke: 'rgba(59, 89, 152,0.8)'
}];
});
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Multi Slot Transclude</title>
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.5.0-rc.0/angular.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.3.0/Chart.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular-chart.js/1.0.3/angular-chart.min.js"></script>
</head>
<body ng-app="app" ng-controller="DoughnutCtrl">
<canvas
class="chart chart-bar"
chart-data="data"
chart-labels="labels"
chart-dataset-override="colors">
</canvas>
</body>
</html>