Programme pour dessiner des poids dans les bords ne fonctionnent pas correctement + NetworkX

StackOverflow https://stackoverflow.com/questions/5849878

  •  27-10-2019
  •  | 
  •  

Question

I ai ce programme pour tracer un bord marqué avec les noeuds en utilisant matplotlib intérieur d'un cadre wx.

J'ai combiné à l'aide d'exemples sur le site et les requêtes posées par d'autres personnes.

Mais il ne fonctionne pas correctement comme les nœuds et les bords ne soient dessinés mais les poids ne sont pas.

aide quelqu'un peut me trouver la raison pour elle ...

import wxversion
wxversion.ensureMinimal('2.8')

import matplotlib

matplotlib.use('WXAgg')
from matplotlib.backends.backend_wxagg import FigureCanvasWxAgg as FigureCanvas

from matplotlib.backends.backend_wx import NavigationToolbar2Wx

from matplotlib.figure import Figure

import wx

import networkx as nx

class CanvasFrame(wx.Frame):

  def __init__(self):
    wx.Frame.__init__(self,None,-1,
                     'CanvasFrame',size=(550,350))

    self.SetBackgroundColour(wx.NamedColor("WHITE"))

    self.figure = Figure()
    self.axes = self.figure.add_subplot(111)

    self.canvas = FigureCanvas(self, -1, self.figure)

    self.sizer = wx.BoxSizer(wx.VERTICAL)
    self.sizer.Add(self.canvas, 1, wx.LEFT | wx.TOP | wx.GROW)
    self.SetSizer(self.sizer)
    self.Fit()
    G = nx.Graph()
    G.add_edge(1,3,weight = 5)
    G.add_edge(1,2,weight = 4)   

    pos = nx.spring_layout(G)    
    nx.draw_networkx(G, pos, ax=self.axes)
    edge_labels=dict([((u,v,),d['weight'])
         for u,v,d in G.edges(data=True)])
    nx.draw_networkx_edge_labels(G,pos,edge_labels=edge_labels)
class App(wx.App):

  def OnInit(self):
    'Create the main window and insert the custom frame'
    frame = CanvasFrame()
    frame.Show(True)

    return True

app = App(0)
app.MainLoop()
Était-ce utile?

La solution

Crédits à Mr Aric Hagberg de la communauté NetworkX pour cette réponse.

Mais depuis que je suis venu à connaître ce que je pensais que je devrais répondre à d'autres utilisateurs ici pour.

Le seul problème dans le code ci-dessus est

nx.draw_networkx_edge_labels(G,pos,edge_labels=edge_labels,ax= self.axes)

Maintenant, il donne des bords pondérés à l'intérieur WX utilisant NetworkX.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top