【问题标题】:How to suppress graphviz warnings in Python 3?如何在 Python 3 中抑制 graphviz 警告?
【发布时间】:2019-04-02 21:33:48
【问题描述】:

我正在使用 graphviz 模块来渲染节点和链接的网络。

我使用小圆圈作为节点的形状,因此标签故意大于节点。

因此,我收到以下警告:

“警告:节点 'wave',图表 'N' 尺寸太小,无法用于标签”

“Wave”只是节点标签的一个示例。

我收到了很多 warnings because of the high quantity of nodes (screencapture).

所以,我的问题是:我怎样才能抑制这样的警告?

我使用的 graphviz 命令是:

n.view()  # n is my digraph

我已经尝试过以下建议:

How to suppress a third-party warning using warnings.filterwarnings

How to redirect python warnings to a custom stream?

但目前还没有。 提前致谢。

【问题讨论】:

    标签: python-3.x warnings graphviz


    【解决方案1】:

    对于 graphviz,从 v0.11 开始,.draw() 方法有一个silent 选项(请参阅graphviz docs:graphviz.view)。

    显然不在 Windows 上。


    这适用于那些使用networkx(使用pygraphviz)或pygraphviz的人。

    在 pygraphviz 中,警告被收集,然后使用 warnings 模块推送(参见 pygraphviz/agraph.py:1390)。

    因此,您可以在绘图时专门消除警告: warnings docs:Temporarily Suppressing Warnings

    import warnings
    
    <create graph etc>
    
    with warnings.catch_warnings():
        warnings.simplefilter("ignore")
        g.draw()
    

    【讨论】:

      【解决方案2】:

      试试 Eli Bendersky 的优秀页面:Redirecting all kinds of stdout in Python

      stdout 替换为stderr 后,Eli 的解决方案对我在graphviz 上起作用。

      如果您碰巧使用的是Evince,Ubuntu 的内置 PDF 查看器,请参阅:

      https://superuser.com/questions/980237/silence-evinces-warnings-in-ubuntu

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-07-27
        • 2018-03-03
        • 1970-01-01
        • 2019-10-05
        • 1970-01-01
        • 2019-02-25
        • 2011-03-18
        相关资源
        最近更新 更多