Derniers messages sur Zeste de Savoirhttps://zestedesavoir.com/forums/2021-05-14T17:05:45+02:00Les derniers messages parus sur le forum de Zeste de Savoir.Analyser les contributions à des logiciels libres avec fornalder, message #2342812021-05-14T17:05:45+02:00gasche/@gaschehttps://zestedesavoir.com/forums/sujet/15342/analyser-les-contributions-a-des-logiciels-libres-avec-fornalder/?page=1#p234281<p>Bonjour tout le monde,</p>
<p>Cette semaine j’ai fait joujou avec <a href="https://github.com/hpjansson/fornalder">fornalder</a>, un script de visualisation des contributeurs et contributions à un projet libre dans la durée. Si ça vous intéresse, j’ai mis les données et les étapes de reproduction (pour que n’importe qui puisse faire l’analyse sur sa sous-communauté libre préférée) dans un dépôt <a href="https://gitlab.com/gasche-snippets/fornalder-studies/">fornalder-studies</a>.</p>
<p>Les analyses que j’ai faites:</p>
<ul>
<li><a href="https://gitlab.com/gasche-snippets/fornalder-studies/-/blob/main/data/ocaml/README.md">OCaml et tous les paquets opam</a></li>
<li><a href="https://gitlab.com/gasche-snippets/fornalder-studies/-/blob/main/data/coq/README.md">Coq et tous les paquets opam</a></li>
</ul>
<p>Exemple de graphique généré (les cohortes de nouveaux contributeurs au compilateur OCaml au fil des ans):</p>
<figure><img src="https://gitlab.com/gasche-snippets/fornalder-studies/-/raw/main/data/ocaml/ocaml-contributors.png" alt="ocaml contributor cohorts"><figcaption>ocaml contributor cohorts</figcaption></figure>Visualiser une solution du problème du voyageur, message #876342015-11-24T09:09:27+01:00anonyme/@anonymehttps://zestedesavoir.com/forums/sujet/4698/visualiser-une-solution-du-probleme-du-voyageur/?page=1#p87634<p>Ça pourrait marcher effectivement. Après je trouve que c'est plus adapté d'utiliser matplotlib, je l'utilise déjà et avoir la fenêtre avec le zoom et tout est très pratique vu que y'a 250 villes concentrées dans un carré de côté 1.</p>Visualiser une solution du problème du voyageur, message #876322015-11-24T08:59:18+01:00Richou D. Degenne/@Richou%20D.%20Degennehttps://zestedesavoir.com/forums/sujet/4698/visualiser-une-solution-du-probleme-du-voyageur/?page=1#p87632<p>Je suis pas du tout qualifié pour en parler, mais il me semble que <code>turtle</code> pourrait convenir aussi, non ?</p>Visualiser une solution du problème du voyageur, message #876312015-11-24T08:38:15+01:00anonyme/@anonymehttps://zestedesavoir.com/forums/sujet/4698/visualiser-une-solution-du-probleme-du-voyageur/?page=1#p87631<p>J'ai réussi avec matplotlib ! Voilà le résultat:</p>
<p><figure><img alt="" src="http://zestedesavoir.com/media/galleries/2693/73e4f149-81a5-495e-96ef-68a0c9495cdc.png"><figcaption>test</figcaption></figure></p>
<p>Le code:</p>
<table class="codehilitetable"><tr><td class="linenos"><div class="linenodiv"><pre>1
2
3
4
5
6
7</pre></div></td><td class="code"><div class="codehilite"><pre><span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="kn">as</span> <span class="nn">plt</span>
<span class="n">l</span> <span class="o">=</span> <span class="p">[(</span><span class="mi">0</span><span class="p">,</span><span class="mi">1</span><span class="p">),(</span><span class="mi">1</span><span class="p">,</span><span class="o">-</span><span class="mi">1</span><span class="p">),(</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span><span class="o">-</span><span class="mi">1</span><span class="p">),</span> <span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="mi">1</span><span class="p">)]</span>
<span class="n">x</span><span class="p">,</span><span class="n">y</span> <span class="o">=</span> <span class="nb">zip</span><span class="p">(</span><span class="o">*</span><span class="n">l</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">x</span><span class="p">,</span><span class="n">y</span><span class="p">,</span> <span class="s">'--ro'</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">xlim</span><span class="p">([</span><span class="o">-</span><span class="mf">1.2</span><span class="p">,</span><span class="mf">1.2</span><span class="p">])</span>
<span class="n">plt</span><span class="o">.</span><span class="n">ylim</span><span class="p">([</span><span class="o">-</span><span class="mf">1.2</span><span class="p">,</span> <span class="mf">1.2</span><span class="p">])</span>
<span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
</pre></div>
</td></tr></table>
<p>Problème résolu, merci à vous deux !</p>Visualiser une solution du problème du voyageur, message #874642015-11-22T19:32:11+01:00anonyme/@anonymehttps://zestedesavoir.com/forums/sujet/4698/visualiser-une-solution-du-probleme-du-voyageur/?page=1#p87464<p>Oh je vois le truc. J'essaierai ça quand j'aurai un peu de temps. Merci ! </p>Visualiser une solution du problème du voyageur, message #874632015-11-22T19:25:43+01:00yoch/@yochhttps://zestedesavoir.com/forums/sujet/4698/visualiser-une-solution-du-probleme-du-voyageur/?page=1#p87463<p>Avec matplotlib, une technique simple (un peu moche, mais sûrement améliorable) :</p>
<table class="codehilitetable"><tr><td class="linenos"><div class="linenodiv"><pre>1
2
3
4
5
6
7
8</pre></div></td><td class="code"><div class="codehilite"><pre><span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="kn">as</span> <span class="nn">plt</span>
<span class="n">l</span> <span class="o">=</span> <span class="p">[(</span><span class="mf">0.1</span><span class="p">,</span><span class="mf">0.1</span><span class="p">),</span> <span class="p">(</span><span class="mf">0.9</span><span class="p">,</span><span class="mf">0.7</span><span class="p">),</span> <span class="p">(</span><span class="mf">0.4</span><span class="p">,</span><span class="mf">0.5</span><span class="p">),</span> <span class="p">(</span><span class="mf">0.6</span><span class="p">,</span><span class="mf">0.3</span><span class="p">)]</span> <span class="c"># exemple bidon</span>
<span class="n">x</span><span class="p">,</span> <span class="n">y</span> <span class="o">=</span> <span class="nb">zip</span><span class="p">(</span><span class="o">*</span><span class="n">l</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">scatter</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">)</span> <span class="c"># dessine les villes</span>
<span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">)</span> <span class="c"># dessine le chemin</span>
<span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
</pre></div>
</td></tr></table>Visualiser une solution du problème du voyageur, message #874312015-11-22T15:29:16+01:00anonyme/@anonymehttps://zestedesavoir.com/forums/sujet/4698/visualiser-une-solution-du-probleme-du-voyageur/?page=1#p87431<p>J'avais pensé à Graphviz mais dans ce cas j'ai besoin de mettre les villes à des positions précises, alors que Graphviz (je crois) fait le placement à ta place. Ceci dit c'est pratique ce logiciel, je m'en sers pour les illustrations aussi.</p>
<p>Je vais essayer avec matplotlib alors.</p>Visualiser une solution du problème du voyageur, message #874282015-11-22T15:26:10+01:00Vayel/@Vayelhttps://zestedesavoir.com/forums/sujet/4698/visualiser-une-solution-du-probleme-du-voyageur/?page=1#p87428<p>Sinon, tu peux chercher dans les logiciels dédiés au dessin de graphes : Xmind, Pencil, Graphviz, etc.</p>
<p>Mais matplotlib convient tout à fait pour dessiner des points et des lignes.</p>Visualiser une solution du problème du voyageur, message #874152015-11-22T14:09:37+01:00anonyme/@anonymehttps://zestedesavoir.com/forums/sujet/4698/visualiser-une-solution-du-probleme-du-voyageur/?page=1#p87415<p>Bonjour tout le monde,</p>
<p>Je fais mon TIPE sur des métaheuistiques pour le problème du voyageur de commerce, et pour l'instant j'utilise une instance de test à 15 villes. Pour montrer un vrai résultat, j'ai trouvé le <a href="http://labo.algo.free.fr/defi250/defi_des_250_villes.html">défi des 250 villes</a>, qui fournit une liste de 250 villes au format CSV. Elles sont indiquées avec des coordonnées planes, toutes dans le carré du point <span>$(0,0)$</span> à <span>$(1,1)$</span>. Pour visualiser ma solution, j'aimerais bien les afficher sur un graphique et relier les points entre eux suivant ma solution afin de bien visualiser le cycle obtenu. J'ai plusieurs possibilités:</p>
<ul>
<li>
<p>Utiliser matplotlib. Si je me trompe pas, il faudrait ordonner les villes puis séparer les abscisses et les ordonnées en 2 tableaux et faire appel à <code>plt.plot()</code> qui s'occuperait de me tracer les segments entre les villes dans l'ordre ?</p>
</li>
<li>
<p>Utiliser Pillow. J'ai vu dans le dernier CdS que certains l'utilisaient pour faire la visualisation du feu de forêt, mais je me demande si c'est réellement une bonne idée si matplotlib fait l'affaire, je réinventerais un peu la roue</p>
</li>
<li>
<p>Utiliser une bibliothèque SVG</p>
</li>
</ul>
<p>Que me conseilleriez-vous ?</p>
<p>P.S: je fais mes schémas en SVG avec Inkscape, est-ce que c'est une bonne idée pour le rapport en LaTeX ?</p>