【问题标题】:pylab/networkx; no node labels displayed after updatepylab/networkx;更新后不显示节点标签
【发布时间】:2014-11-10 00:54:40
【问题描述】:

在我将 matplotlib 更新到当前版本后,我遇到了 networkX 中节点标签的问题:如果我使用 nx.draw(G) 命令,我会得到一个图表,但没有显示任何标签。但是让我们用例子来说话:

import networkx as nx
import matplotlib.pylab as plt

T=nx.Graph()
T.add_edge(0,1)
nx.draw(T)
plt.show()

这会返回一个有效的图,但没有节点标签。即使我像在

中那样直接传递标签
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()

仍然没有标签。我很确定它(尤其是上面的那个)在更新前昨天还在工作。那么从 matplotlib 1.3.x 有没有变化(不记得我之前运行的确切那个)?当前版本是:

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

Little Extra:如果我用nx.draw(T, with_labels=True) 运行上面的代码,我会得到一个图(我的设置上有一个额外的窗口),当我关闭它时会弹出一个TypeError: bad argument type for built-in operation。如果我运行nx.draw(T, with_labels=False) 就不会发生这种情况,这非常令人困惑,因为我认为with_labels 参数需要一个布尔值(see here),它(部分)没有......?

我在这里误解了什么吗?

编辑:@tcaswell 希望有所帮助!

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

(我既不是数学家也不是程序员,但愿意学习,请耐心等待!)

【问题讨论】:

  • 不应该import networksimport networkx
  • Mac上该死的自动更正功能:(这是代码中的正确方法,只是在浏览器中更正了
  • 我可以确认标签没有显示为 1.4。
  • 你能给出来自TypeError的全栈跟踪吗?
  • 你在使用 osx 后端吗?请参阅github.com/matplotlib/matplotlib/issues/3470 相关链接。尝试使用任何 *agg 后端。

标签: python matplotlib networkx


【解决方案1】:

这在 OSX 后端 (#3470) 中遇到了一个已知(但未解决的)错误。

切换到基于 Agg 的后端之一应该通过避免它来“解决”问题。

更新

部分问题已确定并合并https://github.com/matplotlib/matplotlib/pull/3564。此修复程序应在 mpl v1.4.1 及更高版本中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-09
    • 1970-01-01
    相关资源
    最近更新 更多