Graphiques groupés ET empilés

Bonjour,

Je poursuis avec plus ou moins de bonheur mon parcours initiatique sur Jeedom.

J’explore les Vues et les Designs et je trouve surprenant que les vues qu’on s’amuse à fignoler ne soit pas intégrables directement dans les Design mais qu’on doive récréer des « Graphiques » qui reprennent sensiblement les mêmes infos et les mêmes menus (sauf toutefois la possibilité d’ordonner les séries).

C’est peut-être historique et c’est peut-être aussi une piste d’amélioration de fusionner ces deux fonctionnalités.

Par ailleurs, j’ai cherché sans succès à obtenir des graphiques (colonne ou pas) à la fois groupés et empilés comme on peut le faire avec Excel par exemple. Je n’ai pas trouvé comment faire et je ne suis pas sûr que ce soit possible.

Quelqu’un a-t-il un retour d’expérience là-dessus ?

Merci et bonne journée à tous.

Bonjour,

Si c’est avoir pour ce genre de graphique empilés :

image

C’est faisable.
Il suffit de configurer les graphiques comme suit :

Bonjour,

Hélas non… ça je sais le faire. Ce que je voudrais faire, c’est ça :

2x2 séries empilées

Ah, OK…
En 3x1, ça fonctionne en effet (il suffit de décocher la case Empiler de l’une des valeurs), mais en 2x2 je ne sais pas…

1 « J'aime »

Merci… A suivre donc…

1 « J'aime »

Bonjour,

Si vous voulez faire des courbes dans tous les sens paramétrable et autres, ce n’est pas trop le but de Jeedom.

Faut utiliser Grafana

Ca semble possible avec highcharts qui est intégré à Jeedom:

Mais ce n’est pas accessible par l’interface. Il faut le programmer.

Merci de ce retour.

Je ne connais pas Grafana mais ça a l’air tres intéressant. Je vois qu’il y a une API. Pensez-vous qu’il soit possible que Jeedom envoie des donnees a Grafana et recupere les visualisation dans un Design ?

Ce serait top!

Je connais pas HighCharts mais ça a aussi l’air vraiment très bien. J’ai l’impression cependant que c’est un produit payant.

Je suis prêt à programmer quelque chose mais les tutos que je trouve (comme celui-ci) se concentrent sur l’accessoire (les couleurs, leurs formes, les css, etc…) en omettant l’essentiel: comment établir la connexion entre HighCharts et Jeedom ?

Je vais farfouiller pour essayer trouver mais si vous avez un lien explicatif, ce serait super.

Merci !

Bon… comme d’habitude, c’est assez cryptique…

J’ai tenté un essai HighCharts en me fondant sur le tuto [PARTAGE] Jauges Highcharts paramétrable, ouvert aux contributions. Ce n’est pas le type de graphique que je souhaite mais c’était pour tester.

On écrit dans le tuto d’aller créer un Widget en mode code

Puis de cliquer sur le bouton « nouveau ». Problème: je n’ai pas de bouton « nouveau » mais je me dis que cela a peut-être changé et que c’est désormais le bouton « créer un widget »

Alors je clique sur « créer un widget » et effectivement j’ai la fenêtre qui va bien qui s’ouvre :

J’indique alors comme dans le tuto que je veux crée un widget de type info et de sous-type numérique et de Nom JaugeHighchart et là… j’ai un message d’erreur: « le sous-type ne peut être vide ».

Il n’est pourtant pas vide.
J’avais par ailleurs bien créer le fichier cmd.info.numeric.JaugeHorizontal.html dans le répertoire qui va bien…

Bref, je suis à nouveau bloqué… Je suis preneur d’une doc « Highcharts dans Jeedom » si elle existe.

Merci !

Bonjour,
La réponse de Jeedom concernant Le sous type ne peut être vide:

Vous avez vu l’exemple pour savoir comment créer les axes et les séries de données pour qu’elles soient groupées ?
On y accède par le bouton image sur la page de l’exemple fourni plus haut.

1 « J'aime »

Ah merci ! Je n’avais pas pensé à aller chercher un lien sur l’erreur… j’ai pas encore les réflexes.

Je vais retenter dès que j’ai 5 minutes.

Le lien que vous partagez ne fonctionne pas (erreur 404) mais j’avais bien vu celui-ci: https://jsfiddle.net/gh/get/library/pure/highcharts/highcharts/tree/master/samples/highcharts/css/x-range/

A vrai dire, je ne sais pas du tout comment je vais intégrer ces fichiers html, css et js dans jeedom mais je vais tenter de comprendre.

Merci encore !

Effectivement erreur 404, je corrige.
J’y accède en cliquant sur le bouton JS Fiddle sous l’exemple highcharts.

1 « J'aime »

Bon… je progresse mais très lentement en raison de ma méconnaissance de jeedom.

1. Première étape:

Suite au bug signalé par Loïc sur la création de widget code, je l’ai créé à la main et j’y est collé le code Highcharts (html + css + javascript). A ce stade, cela revient à coller le fichier exemple avec des données statiques

Le code:

<script src="https://code.highcharts.com/highcharts.js"></script>
<script src="https://code.highcharts.com/modules/exporting.js"></script>
<script src="https://code.highcharts.com/modules/export-data.js"></script>
<script src="https://code.highcharts.com/modules/accessibility.js"></script>
<style>
  .highcharts-figure,
.highcharts-data-table table {
    min-width: 310px;
    max-width: 800px;
    margin: 1em auto;
}

#container {
    height: 400px;
}

.highcharts-data-table table {
    font-family: Verdana, sans-serif;
    border-collapse: collapse;
    border: 1px solid #ebebeb;
    margin: 10px auto;
    text-align: center;
    width: 100%;
    max-width: 500px;
}

.highcharts-data-table caption {
    padding: 1em 0;
    font-size: 1.2em;
    color: #555;
}

.highcharts-data-table th {
    font-weight: 600;
    padding: 0.5em;
}

.highcharts-data-table td,
.highcharts-data-table th,
.highcharts-data-table caption {
    padding: 0.5em;
}

.highcharts-data-table thead tr,
.highcharts-data-table tr:nth-child(even) {
    background: #f8f8f8;
}

.highcharts-data-table tr:hover {
    background: #f1f7ff;
}

.highcharts-description {
    margin: 0.3rem 10px;
}
</style>
<figure class="highcharts-figure">
    <div id="container"></div>
    <p class="highcharts-description">
        Chart showing stacked columns with grouping, allowing specific series to
        be stacked on the same column. Stacking is often used to visualize
        data that accumulates to a sum.
    </p>
</figure>
<script>
  // Data retrieved from https://en.wikipedia.org/wiki/Winter_Olympic_Games
Highcharts.chart('container', {

    chart: {
        type: 'column'
    },

    title: {
        text: 'Olympic Games all-time medal table, grouped by continent',
        align: 'left'
    },

    xAxis: {
        categories: ['Gold', 'Silver', 'Bronze']
    },

    yAxis: {
        allowDecimals: false,
        min: 0,
        title: {
            text: 'Count medals'
        }
    },

    tooltip: {
        format: '<b>{key}</b><br/>{series.name}: {y}<br/>' +
            'Total: {point.stackTotal}'
    },

    plotOptions: {
        column: {
            stacking: 'normal'
        }
    },

    series: [{
        name: 'Norway',
        data: [148, 133, 124],
        stack: 'Europe'
    }, {
        name: 'Germany',
        data: [102, 98, 65],
        stack: 'Europe'
    }, {
        name: 'United States',
        data: [113, 122, 95],
        stack: 'North America'
    }, {
        name: 'Canada',
        data: [77, 72, 80],
        stack: 'North America'
    }]
});

</script>

2. je me doute bien que je vais devoir remplacer ces données statiques par celles issues en dynamique de commandes Jeedom

ChatGPT qui est mon ami (parce que pour trouver l’info autrement… bonjour) m’indique que la syntaxe va être quelque chose de ce genre (modulo des concaténations et tripatouillages divers et variés pour se conformer à la structure qu’attend Highcharts):

var data = jeedom.cmd.get({id: "ton_id_de_commande"});
Highcharts.chart('container', {
  series: [{
    name: 'Données dynamiques',
    data: data // insérer les données récupérées
  }]
});

3. en ensuite ?

je ne sais pas trop parce que le widget code créé à la main n’apparaît pas dans la liste de mes widgets. En revanche, il apparaît dans la liste des possibles remplacements ce qui m’effraie: DanielJ explique en effet que cet outil de remplacement est irréversible (j’aurais envie d’écrire irrémédiable) et comme je suis tout sauf sûr de moi… j’hésite.

Deux questions ouvertes pour moi:

  • Suis-je sur la bonne piste ?
  • Y a-t-il moyen de tester tout cela dans une sandbox sans tout casser ?

ps: j’ai bien vu le plugin script mais ça me paraît encore plus scabreux.