Salut,
Je me demandais s'il existait en JS des librairies permettant de tracer des courbes (dans un canvas ou autre) avec des fonctionnalités comme le zoom box, auto calibrage, curseur... Un peu comme certaines calculatrices graphiques...
Salut,
Je me demandais s'il existait en JS des librairies permettant de tracer des courbes (dans un canvas ou autre) avec des fonctionnalités comme le zoom box, auto calibrage, curseur... Un peu comme certaines calculatrices graphiques...
oui, quelques milliers https://github.com/search?q=javascript+graph
«La pluralité des voix n'est pas une preuve, pour les vérités malaisées à découvrir, tant il est bien plus vraisemblable qu'un homme seul les ait rencontrées que tout un peuple.» [ René Descartes ] - Discours de la méthode
Sinon une petit création de notre ami Andry en php https://andry.developpez.com/tutorie...-geometriques/
Ma page Developpez - Mon Blog Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag
Venez sur le Chat de Développez !
Bonjour,
Une solution basée sur canvas :
http://eleydet.free.fr/BTS/applicati...aceur_exp.html
Et une version basée sur SVG qui fonctionne mais doit être améliorée :
http://eleydet.free.fr/tmp/
Merci à tous les trois...
Ok je vais regarder vos liens...
Re-Salut,
Bon j'ai regardé les liens et j'en ai cherché d'autres et souvent ce sont des outils pour tracer des histogrammes (charts) et mêmes des courbes mais par contre on n'a pas forcément les fonctionnalités comme le zoom box, auto calibrage, curseur...
En plus j'aimerais pour faire des tracés en temps réels (genre comme un oscilloscope qui "trace" la tension en fonction du temps)...
Je pense que je vais essayer de l'écrire...
As-tu pensé à ajouter d'autres fonctionnalités ?
Il me semble qu'un des points les plus difficiles c'est la graduation, en faire une avec des nombres qui tombent juste n'est pas évident...
Salut,
Qu'est-ce qui est le mieux entre canvas et svg ? Notamment pour un tracé en temps réel ?
Bonjour,
Beginner écrit :
A mon avis SVG est le mieux. Il permet de faire des zooms sans dégrader l'image.Qu'est-ce qui est le mieux entre canvas et svg ?
Grafana est une solution très classique.En plus j'aimerais pour faire des tracés en temps réels
Je n'ai pas besoin de fonctionnalités supplémentaires. Mon but est double :As-tu pensé à ajouter d'autres fonctionnalités ?
- Inclure simplement des graphiques au sein de pages HTML (je l'utilise déjà pour cela, mais je compte améliorer la bibliothèque).
- Mettre à jour mes traceurs de courbes en abandonnant canvas pour passer à SVG (pas encore fait).
J'ai commencé à regarder ton code...
Je vois que c'est à nous de fixer les deltas (x et y)... C'est un des points difficiles car lorsqu'on fait des zoom box il faut pouvoir calculer automatiquement ces deltas et bien sûr si on veut des graduations qui tombe juste (des chiffres ronds) cela se complique encore plus...
Je veux dire par "des graduations qui tombe juste" des graduations dont le pas est l'un des chiffres suivants : 0.25, 0.50, 1 multiplié par 10^n où n peut être positif ou négatif...
En plus le pas doit tenir compte d'un autre problème : les graduations ne doivent pas se chevaucher ce qui fait qu'on doit parfois limiter le nombres de chiffres, pour cela certains ajoutent une puissance de 10 sur les axes...
Il y a du boulot...
Bonsoir,
C'est vrai que je pourrais mettre en place un système de graduation automatique. Je n'y avais pas pensé.
Sinon, le code http://eleydet.free.fr/tmp/JSgrapheur.js me semble plus intéressant.
Salut,
Il se pourrait bien que SVG soit plus lent (gestion du DOM) que Canvas...
Pour le tracé en temps réel il faut pouvoir tracer les points au fur et à mesure, je me demande si avec le SVG on trace à chaque fois(à chaque nouveau point) toute la courbe ou bien si on peut la tracer point par point...
Bonsoir,
J'ai commencé à travailler sur cette idée de graduations automatiques. Je n'ai fait que l'axe horizontal.
http://eleydet.free.fr/tmp2/
L'idée est de définir un nombre de graduations selon :
- la largeur en pixels du graphique,
- la hauteur des caractères indiquant les valeurs des graduations.
Exemple :
Puis de calculer la valeur d'une graduation :
Code : Sélectionner tout - Visualiser dans une fenêtre à part nb_graduation = Math.round( largeur_pixels_graphique / 50 );
Code : Sélectionner tout - Visualiser dans une fenêtre à part graduation = ( (valeur_maxi - valeur_mini) / nb_graduation ).toPrecision(1);Je ne sais pas.Il se pourrait bien que SVG soit plus lent (gestion du DOM) que Canvas...
Au premier abord, je déplacerais les points sur la courbe plutôt que de dessiner une courbe par dessus l'autre.Pour le tracé en temps réel il faut pouvoir tracer les points au fur et à mesure,
Bonjour,
pas lu tout le fil mais je rebondie sur
c'est indéniable.Envoyé par Beginner.
Au passage, la bibliothèque Chart.js(*) gère ses graphiques sur base de <canvas>, si cela vous dit d'y jeter un oeil.
(*) il doit y en avoir d'autre mais j'ai celui-ci en réserve
Les joies du CSS | Réponses sur forum | Simple comme JS | Essais libres autour de l'API G$$gle Maps
✂ ---------------------------------------------
developpez.net c'est aussi :
✔ Les meilleurs cours et tutoriels pour apprendre le CSS
✔ Les meilleurs cours et tutoriels pour apprendre le (X)HTML
✔ Les meilleurs cours et tutoriels pour apprendre le JavaScript
Ah je vois que tu affiches les graduations des abscisses verticalement... C'est en effet une astuce permettant d'en afficher le plus possible tout en évitant les chevauchements.Envoyé par eleydet
PS : Tu voulais écrire "valeur_maxi - valeur_mini" je suppose...
@NoSmoking Ah je viens de lier ton message, merci pour la réponse...
Bonsoir,
C'est corrigé, merci!PS : Tu voulais écrire "valeur_maxi - valeur_mini" je suppose...
Ok donc SVG est à priori moins rapide...
Mais un avantage peut-être c'est que l'on a accès à chaque élément (DOM) du coup on peut ajouter des gestionnaires d'événements, par exemple on pourra traiter le clique sur la courbe...
On peut aussi ajouter un style CSS...
Il me semble qu'il n'y a rien pour faire de telles choses avec canvas, non ? Il nous faut faire tout nous même ? Par exemple pour savoir si on clique sur la courbe il faudra récupérer les coordonnées de la souris et vérifier par calcule si elles correspondent à la courbe...
Si on veut faire un glisser/déposer d'une figure cela doit être plus difficile avec canvas ? J'ai vu que cela était possible ici : http://fabricjs.com/events cela doit exiger beaucoup de calculs...
Bonjour,
Nouvelle version avec les couleurs inspirées de Grafana et... les graduations automatiques!
http://eleydet.free.fr/tmp/
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager