7
votes

Générez des graphiques sans HTML / Navigateur

J'ai une application nœud.js qui accède aux données d'une base de données MySQL et que je souhaite générer des graphiques à partir de ces données de manière dynamique, pour le tuyer comme image (PNG / JPG) via un serveur HTTP à l'utilisateur. Je cherche un petit moment maintenant, mais je n'ai pas pu trouver une bibliothèque pour le faire sans l'approche HTML / Toile. Comme je souhaite laisser le serveur faire le rendu pour utiliser le graphique dans des courriels ou des fichiers PDF rendus dynamiquement, ce n'est pas une option ici.

Quelle pourrait être l'approche ici (avec ou sans une bibliothèque)?

Modifier pour fournir une preuve de propre travail: j'ai trouvé https://plot.ly , qui est en termes d'utilisation et résultat vraiment proche de répondre à mes besoins, mais nécessite une connexion Internet, car elle appelle une API distante.


12 commentaires

Clairement hors topique (lire Comment demander à ). Pourquoi quelqu'un pourrait-il suivre cela?


J'ai édité la question de la rendre plus évidente à transmettre par les utilisateurs qu'il s'agit d'une vraie question et non d'une demande de bibliothèque.


Pourquoi la toile n'est-elle pas une option? Vous pouvez rendre sur toile et obtenir les données d'image pour envoyer au client ou enregistrer sur le serveur pour une utilisation ultérieure dans les PDFS ou quoi que ce soit.


@ Denységuet - Quelle est la différence? La fonctionnalité n'est évidemment pas là et la question n'est pas «J'ai mis en place un module JPG, mais j'ai ce petit bogue Pesky dont j'ai besoin d'aide». Ceci est hors sujet.


@Amit la question, imo, est à propos de la stratégie réalisable pour générer un côté du serveur d'images de graphique donné qu'il ne semble pas être une bibliothèque pour le faire avec le nœud ( Disclaimer: Je n'ai pas vérifié cette réclamation ).


Vous pouvez dessiner le graphique à l'aide de SVG puis convertir en JPG.


Vous pouvez utiliser Python pour le rendu des graphiques. Jetez un coup d'œil à ce fil: Stackoverflow.com/questions/ 10775351 / ...


@ DENYSSÉGURET - Voyez-vous une réponse réalisable qui n'implique pas non plus «Utiliser la bibliothèque X» ou «Créer une bibliothèque Y, que vous pouvez baser sur la bibliothèque existante Z dans la langue / le domaine FOO»? (Comme Hauke ​​juste l'a fait)


Cher Amit: Je m'excuse au cas où ma question n'est pas assez claire. Depuis que je gère le problème décrit ci-dessus pour seulement quelques heures, je ne suis pas au courant de la quantité de solutions possibles. (Ou l'absence d'autres solutions, à côté des bibliothèques), car je ne croyais pas que je suis le premier qui a le besoin, je pouvais y avoir un moyen intelligent ou élégant de rendre le HTML / SANVAS sur le serveur à image. (Et je ne suis pas coincé aux solutions de bibliothèque, car je ne suis pas au courant d'autres possibilités. Autres approches, si possible, sont les bienvenues)


Vous pouvez essayer un wrapper chartiste pour le nœud: github.com/panosoft/node-chartist


Xqdev - on dirait que vous avez quelques suggestions de bibliothèque (exactement comme je m'attendais à ce que je devais arriver). Autre alors que ce que vous demandez est une personne de créer une bibliothèque pour vous ici. Je ne vois pas ça se passe. Bonne chance quand même.


Cher Amit, je n'ai besoin de personne pour créer une bibliothèque pour ma tâche. J'ai demandé des solutions existantes ou un bon moyen de créer ma propre solution, même si la solution pouvait signifier d'exécuter des outils basés sur la console comme RRDGraph (sur Linux). Une bibliothèque serait bien, bien sûr, car je peux m'en tenir au travail sur la tâche et non sur les outils.


3 Réponses :


2
votes

Il y a un wrapper de nœud pour la bibliothèque de graphiques chartiste . Vous pouvez utiliser cette bibliothèque pour générer un SVG et un SVG2Png Lib à convertir en PNG.


0 commentaires

2
votes

Eh bien, il existe plusieurs options, j'utiliserais des phanomjs (navigateur webkit sans tête) pour rendre les graphiques.

Pourquoi cette option serait-elle bonne? L'une des raisons est que vous n'avez pas besoin de code dupliqué pour le codage du serveur et du client, vous pouvez simplement réutiliser le code. Sur le côté serveur Créez un fichier HTML avec des scripts et des données requis et de le rendre.


0 commentaires

9
votes

Vous pouvez également essayer de poser ceci dans le Overflow de pile de lecture logicielle . Mais une option qui semble que cela puisse être adaptée à vos besoins, c'est Zingchart .

Ils ont un Phantomjs Construire pour rendu des versions statiques des graphiques. De plus, les utilisateurs sous licence peuvent accéder à un nœud.js Catégorie pour la cartographie latérale du serveur.

Divulgation complète, je suis sur l'équipe de Zingchar, alors laissez-moi savoir si je peux vous aider à revoir toutes vos options.


0 commentaires