【问题标题】:networkx draw_networkx_edges capstylenetworkx draw_networkx_edges capstyle
【发布时间】:2012-07-03 23:36:01
【问题描述】:

有谁知道在通过(例如)draw_networkx_edges 绘制 networkx 边缘时是否可以对线属性进行细粒度控制?我想控制solid_capstylesolid_joinstyle这行,它们是(matplotlib)Line2D属性。

>>> import networkx as nx
>>> import matplotlib.pyplot as plt
>>> G = nx.dodecahedral_graph()
>>> edges = nx.draw_networkx_edges(G, pos=nx.spring_layout(G), width=7)
>>> plt.show()

在上面的示例中,我想通过控制 capstyle 来隐藏边缘之间的“间隙”。我曾考虑以合适的尺寸添加节点以填补空白,但我最终绘图中的边缘是彩色的,因此添加节点不会削减它。 我无法从文档中弄清楚或查看edges.properties() 如何做我想做的事情......有什么建议吗?

卡森

【问题讨论】:

    标签: python matplotlib networkx


    【解决方案1】:

    您似乎无法在 matplotlib 行集合上设置 capstyle。

    但是您可以使用 Line2D 对象制作自己的边缘集合,这样您就可以控制 capstyle:

    import networkx as nx
    import matplotlib.pyplot as plt
    from matplotlib.lines import Line2D
    G = nx.dodecahedral_graph()
    pos = nx.spring_layout(G)
    ax = plt.gca()
    for u,v in G.edges():
        x = [pos[u][0],pos[v][0]]
        y = [pos[u][1],pos[v][1]]
        l = Line2D(x,y,linewidth=8,solid_capstyle='round')
        ax.add_line(l)
    ax.autoscale()
    plt.show()
    

    【讨论】:

    • 感谢@Aric。完美运行!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-09
    • 1970-01-01
    • 2019-04-01
    • 1970-01-01
    • 2021-05-14
    • 2017-07-08
    相关资源
    最近更新 更多