Программа для рисования весов на ребрах не работает правильно + networkx - PullRequest
0 голосов
/ 01 мая 2011

У меня есть эта программа для рисования помеченного ребра с узлами, используя matplotlib внутри фрейма wx.

Я объединил это, используя примеры на сайте и запросы других людей.

Но это не работает правильно, так как узлы и ребра прорисовываются, а веса - нет.

Может ли кто-нибудь помочь мне найти причину этого ...

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()

1 Ответ

2 голосов
/ 01 мая 2011

Кредиты Mr Aric Hagberg сообщества networkx за этот ответ.

Однако, поскольку я узнал об этом, я подумал, что должен ответить здесь для дальнейших пользователей.

Единственная проблема в приведенном выше коде это

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

Теперь он дает взвешенные ребра внутри wx, используя networkx.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...