pagination-problem / 2-tile

Studied problem: Pagination problem with two machines and every tile contains only two symbols
0 stars 0 forks source link

Impossible de dessiner un arbre #2

Closed SarahMinich closed 4 years ago

SarahMinich commented 4 years ago

Je ne comprends pas cette situation. Dans le commit 46e7ba2, j'ai mis en ligne un tout petit test pour créer un arbre à partir d'une séquence de Prüfer puis le dessiner. Pour pouvoir comparer les résultats, j'ai utilisé la séquence donnée dans cet article Wikipédia.

EDIT : dans l'article Wikipédia, les sommets sont numérotés de 1 à n mais networkx travaille avec des sommets numérotés de 0 à n-1 c'est pour cela que la séquence P=(4,4,4,5) devient P=(3,3,3,4).

Je n'arrive pas à faire fonctionner ce code sur mon poste car j'obtiens ce warning :

Warning: QT_DEVICE_PIXEL_RATIO is deprecated. Instead use:
   QT_AUTO_SCREEN_SCALE_FACTOR to enable platform plugin controlled per-screen factors.
   QT_SCREEN_SCALE_FACTORS to set per-screen factors.
   QT_SCALE_FACTOR to set the application global scale factor.
  1. Tout d'abord, je ne comprends pas pourquoi un warning empêche l'exécution de mon code. Il me semblait qu'il y avait une différence entre warnings (qui sont plus des conseils et ne sont pas bloquants) et des erreurs (qui empêchent le code de s'exécuter).

  2. Ensuite, j'ai regardé sur le net et beaucoup de personnes ont conseillé de supprimer la variable d'environnement QT_DEVICE_PIXEL_RATIO (comme ici) mais ça n'a pas fonctionné.

  3. En désespoir de cause, j'ai essayé exactement le même code dans un Jupyter Notebook et là... ça fonctionne sans aucun problème.

laowantong commented 4 years ago

Ton test s'exécute correctement en ligne de commande sur mon mac. Mais bien sûr il ne fait rien de ce qu'il trace puisque tu ne lui demandes rien. Essaie ça pour afficher et sauvegarder :

import networkx as nx
import matplotlib.pyplot as plt

plt.figure(figsize=(10,10))
sequence = [3, 3, 3, 4]
G = nx.from_prufer_sequence(sequence)
nx.draw_networkx(G)
plt.savefig("a.pdf")
plt.show()
SarahMinich commented 4 years ago

Effectivement ça marche maintenant ! Merci ! Mais je ne comprends pas pourquoi je dois ajouter plt.show() alors que dans la description de la fonction draw_networkx de la doc ils ne l'utilisent pas (cf premier exemple).