3
votes

Couleurs affichées différemment sur chart.js

Je passe les mêmes couleurs à chart.js via Chartkick-vue mais elles sont affichées différemment. Pourquoi?

<column-chart :data="chartData" :colors="['#007bff', '#28a745']" height="200px">

entrez la description de l'image ici

Mise à jour:

Il y a une différence dans la façon dont les couleurs sont transmises. Le premier exemple est un tableau de couleurs, le deuxième exemple est le tableau de tableau de couleurs. La seconde est bizarre mais elle vient de cette réponse https://stackoverflow.com/a/61139231/1639556 .

J'ai un autre tableau qui présente les mêmes symptômes:

<column-chart
  :data="votesData"
  height="200px"
  :colors="[['#28a745', '#007bff', '#ffc107', '#dc3545']]"
>
</column-chart>
<bar-chart
  :data="chartData"
  suffix="%"
  height="100px"
  :colors="['#28a745', '#007bff', '#ffc107', '#dc3545']"
  :stacked="true"
  :library="{ options: { tooltips: false } }"
>

entrez la description de l'image ici


0 commentaires

3 Réponses :


1
votes

La documentation montre qu'il y a à la fois des couleurs d'arrière-plan et de contour à définir, vous ne donnez qu'une seule couleur donc cela suppose que vous faites référence au contour des barres. Il utilisera cette couleur pour les contours, puis une version fanée (plus claire) de la même couleur que la couleur d'arrière-plan des barres.

Essayez d'utiliser à la fois les couleurs d'arrière-plan et de contour, ou supprimez simplement le contour et analysez une couleur pour chaque barre après cela.


0 commentaires

1
votes

étant donné que les graphiques à barres dans charts.js ont borderColor et backgroundColor, vous pouvez les personnaliser dans votre propriété de jeu de données pour obtenir le même résultat que les histogrammes, je parle d'écrire qc comme ceci:

    let chartData = {labels: ['Neni problem','Branalita', 'Vadi me to', 'Vas...'], datasets: [
        {
          backgroundColor: 'rgba(40, 167, 69, 1)',
          borderWidth: 0,
          data: 40
        }
         ,
         ...
        }];

<bar-chart
  :data="chartData"
  suffix="%"
  height="100px"
  :stacked="true"
  :library="{ options: { tooltips: false } }"
>

et parce que vous ne voulez pas qu'il ait des couleurs de bordure et que vous voulez qu'il ait seulement une couleur d'arrière-plan unie, dans les options de jeu de données, je vous suggère de définir borderWidth sur 0 pour chaque barre et d'utiliser l'équivalent RVBA de vos couleurs hexadécimales avec alpha 1


0 commentaires

2
votes

Une solution consiste à, au lieu de donner les valeurs RVB HEX, transmettre les valeurs RVBA HEX dans l'accessoire de couleur. Si vous faites cela, vous pouvez voir que quel que soit le dégradé que vous choisissez, les deux graphiques affichent la même couleur et le même dégradé, de sorte que les couleurs seront identiques.

Pour faciliter l'utilisation, j'ai mis les couleurs dans une variable distincte dans cet exemple: https://codesandbox.io/s/immutable-worker-3qxgj

<template>
  <div class="hello">
    <column-chart :data="votesData" height="200px" :colors="[colors]">
    </column-chart>
    <bar-chart
      :data="chartData"
      suffix="%"
      height="100px"
      :colors="colors"
      :stacked="true"
      :library="{ options: { tooltips: false } }"
    >
    </bar-chart>
    <line-chart :data="data" :colors="colors" />
    <bar-chart
      :colors="colors"
      :data="booksData"
      suffix="%"
      height="200px"
      :stacked="true"
    ></bar-chart>
  </div>
</template>

<script>
export default {
  name: "HelloWorld",
  props: {
    msg: String,
  },
  data() {
    return {
      colors: ["#28a745ff", "#007bffff", "#ffc107ff", "#dc3545ff"],
    };
  },
};
</script>


7 commentaires

Lee, je suis curieux de savoir si ce problème vient de chartjs ou de wrapper? github.com/literakl/mezinamiridici/issues/101 Vous pouvez le voir dans le sandbox de code.


Cela vient du wrapper, j'utilise la bibliothèque elle-même dans un projet et j'ai dû ajouter manuellement l'alpha pour le rendre transparent. Vous pouvez voir cet exemple que j'ai fait une fois pour un problème selon lequel je ne passe que l'hexagone RVB et il montre un colleur complet: codepen.io/leelenaleee/pen/VwjgNGw . De plus, si vous regardez le code source des exemples fournis par Chart.js, vous voyez qu'ils ajoutent eux-mêmes la transparence, car la valeur par défaut est qu'il montre le colleur normal complet.


La seule fois où Chart.js affiche une couleur d'arrière-plan transparente pour les graphiques à barres, c'est lorsque vous ne spécifiez pas de couleur d'arrière-plan, toutes les barres par défaut seront alors sur un fond gris transparent


Je voulais dire un problème avec un popup gris coupé en deux. user-images.githubusercontent.com/6383287/...


Je ne suis pas totalement sûr de celui-là, il semble que l'info-bulle sort des limites du canevas, donc elle ne peut plus la dessiner, mais je ne sais pas s'il s'agit d'un problème interne à chart.js ou d'un problème de wrapper.


Je suppose que c'est un problème interne, bien qu'il ait pu être résolu avec la prochaine version majeure de la version 3 de la bibliothèque. stackoverflow.com/questions/44497200/...


: library = "{layout: {padding: {bottom: 50}}}"