当前位置: 首页 > 面试题库 >

pylab / networkx; 更新后未显示任何节点标签

督德明
2023-03-14
问题内容

将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

小小额外功能:如果我运行上面的代码,nx.draw(T, with_labels=True)会得到一个图(设置中的额外窗口),当我关闭它时,会TypeError: bad argument type for built-in operation弹出一个窗口。如果我运行nx.draw(T, with_labels=False),它不会发生,这非常令人困惑,因为我认为with_labels参数需要一个布尔值(请参阅此处),(部分地)它不会....?

我在这里误会什么吗?

编辑:@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

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


问题答案:

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

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

更新

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



 类似资料:
  • H=nx。来自\u pandas\u edgelist(链接,source='source',target='target',edge\u attr='value') 这给了我边和边的列表 edge_labels=nx.get_edge_attributes(Q,'value')nx.draw_networkx_edge_labels(Q,pos=nx.draw(Q),标签=edge_labels

  • 我第一次用苹果笔记本电脑。 我安装了Android Studio 4.0或4.1(我想)。它曾经在触摸栏中显示所有图标,如绿色运行图标和调试图标,以便我可以直接从那里使用它们。即使在调试模式下,我也会看到所有的图标,用于跳过或进入代码。 此后,我更新了Android Studio 2-3次,目前我使用的是Android Studio 4.2.1,自我第一次更新以来,它已停止显示Android St

  • 我正在编写一个简单的节点。js项目使用最新版本的eclipse IDE for JavaScript和Web开发者版本:2019-09 R(4.13.0)构建id:20190917-1200 OS:Mac OS X,v.10.15.1,x86_64/cocoa Java版本:12.0.2使用最新版本的node。js(Node.jsv12.13.0)我知道TODO任务没有出现在任务视图窗口中:示例代

  • SyntaxError:无效输入“h”:预期为“I/I”(第10行,第28列(偏移量:346))“merge(p:primaryconsumer),其中p.name=svc.name” 我100%确信这些名称是唯一的,并且将与现有节点集中的唯一使用者名称相匹配(有待观察)。 当唯一节点属性匹配时,如何将现有属性添加到新数据中?(我希望获得唯一的ID,但我必须能够在匹配上执行新数据的更新)

  • 问题内容: 对于那些来自PHP背景的人来说,杀死节点并在每次代码更改后重新启动它的过程似乎非常繁琐。使用节点启动脚本以保存代码更改后自动重新启动节点时,是否有任何标志? 问题答案: forever模块具有多个node.js服务器的概念,并且可以启动,重新启动,停止和列出当前正在运行的服务器。它还可以监视文件更改并根据需要重新启动节点。 如果尚未安装,请安装: 安装后,调用命令:使用该标志监视文件的

  • 我有一个在node-kafka驱动的node.js上运行的kafka消费组。当这个消费组处于活动状态或处于活动状态时,我希望看到它被kafa-消费组CLI报告。 kafka消费者组CLI确实显示了控制台消费者,而不仅仅是节点消费者。 我可以在Kafka工具中看到节点使用者组。它不会显示在Kafa consumer groups CLI输出中