Utiliser JFreeChart pour représenter une fonction

Actuellement sur un projet d’optimisation par algorithme génétique, j’ai décidé d’utiliser JFreeChart, un outil de création de diagramme en Java.Cet outil est gratuit mais les tutoriels exemples sont payants, rendant difficile le mimétisme de code, sauf à explorer pendant pas mal de temps stackoverflow.

Le cas d’utilisation que je donne ici est le rendu qui ressemble à celui-ci :

Résultat de l'optimisation

Résultat de l’optimisation

La fonction de base doit être dessinée en continue, puis, les points correspondant aux meilleurs résultats de l’algorithme sous forme de point.

I L’organisation de JFreeChart

Avant de pouvoir dessiner des fonctions avec JFreeChart, il faut comprendre comment un tel dessin est mis en place. Cela permet surtout de savoir dans quelle ordre il faut construire les différents objets.

diagramme UML de JFreeChart

diagramme UML de JFreeChart

Ainsi, il faut commencer par construire les “Series”. Ce sont les ensembles des couples “(t, f(t))”.

Une fois ces Series créées, il faut les ajouter dans une XYSeriesCollection qui doit contenir toutes les séries de données qu’on veut afficher sur le Plot.

Ensuite, la théorie voudrait qu’on crée un Plot puis une Chart. Heureusement, JFreeChart possède des Factory qui prennent en paramètre des XYSeriesCollection :

Le mieux est de créer un ChartPanel, qui étend de JPanel et qui surcharge certaines méthodes afin de mieux redessiner la chart.
Un clic droit sur l’image générée vous permettra de l’enregistrer sous format PNG.

Changer le rendu

Actuellement, nous avons les deux séries qui sont rendues de la même manière.
Nous, ils nous faut un rendu différent selon les séries. Dans notre cas : soit des points soit des lignes.
La configuration à changer dans notre cas, c’est celle du Renderer. Par défaut, les XYChart ont un LineRenderer. Nous, nous allons utiliser le XYLineAndShapeRenderer.

 

Suivi du projet intégré à Netbeans

Les IDE savent tout faire aujourd’hui. Leur architecture qui permettent l’ajout de plugin leur permettent de concentrer en un seul logiciel tous les outils du développement.

Le principal inconvénient de cette évolution, c’est la lenteur au démarrage voire parfois à la compilation. Mais bon quand un logiciel permet d’ajouter aux fonctionnalités habituelles telles que l’autocomplétion, la vérification syntaxique… des outils plus orientés “projets”, ça peut devenir un sacré bonheur d’avoir ces logiciels.

Grand habitué de Netbeans j’utiliserai cet IDE pour la suite du billet, mais sachez que tous les IDE ont ce genres de possibilités, à condition que la communauté (ou l’entreprise) ait développé le plug-in. Ainsi, si vous êtes fan de visual studio, d’éclipse… Un détour sur sourceforge.net vous permettra de découvrir pas mal de plugins open source.

Ce qui m’intéresse dans mon exemple c’est le support d’un gestionnaire de projet, ici redmine. Ce dernier, comme beaucoup d’autres, utilise une interface web pour tout administrer, lier, comprendre. Quand on ne développe pas un site web, c’est parfois frustrant de devoir switcher sur le navigateur pour obtenir l’information qu’on veut, ou pire pour lier un commit à une issue.

Sur redmine, pour lier un commit à un problème, puis clore ledit problème, il faut :

  1. connaître le titre ou l’identifiant de l’issue.
  2. Aller dans Repository=>sélectionner le commit=>cliquer sur “add” en dessous de “related issue”. (c’est petit en plus)
  3. retourner dans issues
  4. ouvrir l’issue
  5. changer le statut
  6. valider.

Quand on est sur netbeans, qui utilise le bugtracker bugzilla, en bas de la fenêtre de commit, on trouve une petite invitation à “mettre à jour l’anomalie”. Preuve que l’IDE a déjà prévu une telle fonctionnalité.

Pour redmine, il faudra aller chercher un plugin qui est pour l’instant en version bêta en entrant ces coordonnées dans le centre de mise à jour (Tools=>Plugin:update center) :

url : http://kenai.com/projects/redminenb/sources/redminenb/content/trunk/dist/updates/updates.xml?raw=true

update

Ensuite, plus qu’à installer le plugin. Une fois cela fait, il faudra ajouter le bugtracker à votre projet. Pour cela, ouvrez votre projet et assurez vous que c’est celui qui est sélectionné. Puis dans Team->Report Issue (signaler une anomalie) cliquez sur “new”.

Il vous proposera tous les bugtracker qu’il connait dans le premier menu déroulant. Sélectionnez redmine. Puis ensuite entrez les coordonnées.

Attention, il faudra que l’API REST soit activée pour que ça marche.

Un petit aperçu :

commit

new_issue

Il ne vous reste plus qu’à configurer vos raccourcis pour que l’accession à ce système soit encore plus rapide. N’hésitez pas aussi à leur faire des retours http://kenai.com/jira/browse/REDMINENB.

Posted in Uncategorized | 1 Reply