Dopo aver aggiornato matplotlib alla versione corrente, ho riscontrato un problema con le etichette del nodo in networkX: se utilizzo il comando nx.draw(G)
, ottengo un grafico, ma non vengono visualizzate etichette. Ma cerchiamo di parlare con gli esempi:pylab/networkx; nessuna etichetta del nodo visualizzata dopo l'aggiornamento
import networkx as nx
import matplotlib.pylab as plt
T=nx.Graph()
T.add_edge(0,1)
nx.draw(T)
plt.show()
questo restituisce una trama valida, ma senza le etichette dei nodi. Anche se passo le etichette direttamente come in
import networkx as nx
import matplotlib.pylab as plt
T=nx.Graph()
T.add_edge(0,1)
labs={}
labs[0]='cake'
labs[1]='cookie'
nx.draw(T,labels=labs)
plt.show()
non ci sono ancora etichette. Sono abbastanza sicuro che (soprattutto quello superiore) funzionasse ieri prima dell'aggiornamento. Quindi c'è stato un cambiamento da matplotlib 1.3.x (non ricordo esattamente quello che stavo correndo in precedenza)? Le versioni attuali sono:
matplotlib (1.4.0) (had to downgrade the pyparsing to 1.5.7 after updating the matplotlib)
networkx (1.9)
python 2.7.6
Mac OS X 10.9.4
po 'di più: se corro il codice superiore con nx.draw(T, with_labels=True)
ricevo una trama (finestra in più sul mio impostazioni) e quando mi chiudo un TypeError: bad argument type for built-in operation
apre. Non succede se corro nx.draw(T, with_labels=False)
, il che è molto confuso, dal momento che ho pensato che l'argomento with_labels
prendesse un valore booleano (see here), che non lo fa (parzialmente) ....?
Sono frainteso qualcosa qui?
Modifica: @tcaswell spero che sia d'aiuto!
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
/usr/local/lib/python2.7/site-packages/matplotlib/artist.pyc in draw_wrapper(artist, renderer, *args, **kwargs)
57 def draw_wrapper(artist, renderer, *args, **kwargs):
58 before(artist, renderer)
---> 59 draw(artist, renderer, *args, **kwargs)
60 after(artist, renderer)
61
/usr/local/lib/python2.7/site-packages/matplotlib/figure.pyc in draw(self, renderer)
1077 dsu.sort(key=itemgetter(0))
1078 for zorder, a, func, args in dsu:
-> 1079 func(*args)
1080
1081 renderer.close_group('figure')
/usr/local/lib/python2.7/site-packages/matplotlib/artist.pyc in draw_wrapper(artist, renderer, *args, **kwargs)
57 def draw_wrapper(artist, renderer, *args, **kwargs):
58 before(artist, renderer)
---> 59 draw(artist, renderer, *args, **kwargs)
60 after(artist, renderer)
61
/usr/local/lib/python2.7/site-packages/matplotlib/axes/_base.pyc in draw(self, renderer, inframe)
2090
2091 for zorder, a in dsu:
-> 2092 a.draw(renderer)
2093
2094 renderer.close_group('axes')
/usr/local/lib/python2.7/site-packages/matplotlib/artist.pyc in draw_wrapper(artist, renderer, *args, **kwargs)
57 def draw_wrapper(artist, renderer, *args, **kwargs):
58 before(artist, renderer)
---> 59 draw(artist, renderer, *args, **kwargs)
60 after(artist, renderer)
61
/usr/local/lib/python2.7/site-packages/matplotlib/text.pyc in draw(self, renderer)
536 renderer.open_group('text', self.get_gid())
537
--> 538 bbox, info, descent = self._get_layout(renderer)
539 trans = self.get_transform()
540
/usr/local/lib/python2.7/site-packages/matplotlib/text.pyc in _get_layout(self, renderer)
309 tmp, lp_h, lp_bl = renderer.get_text_width_height_descent('lp',
310 self._fontproperties,
--> 311 ismath=False)
312 offsety = (lp_h - lp_bl) * self._linespacing
313
/usr/local/lib/python2.7/site-packages/matplotlib/backends/backend_macosx.pyc in get_text_width_height_descent(self, s, prop, ismath)
164 size = self.points_to_pixels(points)
165 width, height, descent = self.gc.get_text_width_height_descent(
--> 166 six.text_type(s), family, size, weight, style)
167 return width, height, 0.0*descent
168
TypeError: bad argument type for built-in operation
(Non sono né un matematico né un programmatore, ma disposti a imparare, quindi per favore siate pazienti!)
Non è necessario "import network" essere "import networkx"? – unutbu
dannata funzione di correzione automatica su Mac :(è il modo giusto nel codice, è stata corretta nel browser –
Posso confermare che l'etichetta non viene visualizzata con 1.4 – tacaswell