【问题标题】:Matplotlib doesn't show last figureMatplotlib 不显示最后一个数字
【发布时间】:2016-06-10 02:46:59
【问题描述】:

我使用 matplotlib 显示数字,但是当涉及到最后一个数字时,它不显示其内容(只是创建窗口)。 我用它来描绘图的最大独立集。因此,sets 实际上是一个包含节点列表的列表。

pos=nx.spring_layout(G) # positions for all nodes

for i in range(0, len(sets)):

    nx.draw_networkx_nodes(G,pos, sets[i],
        node_color='r', node_size=500,  alpha=0.8)

    rest = []
    for j in nodes:
            if j not in sets[i]:
                rest.append(j)

    nx.draw_networkx_nodes(G,pos, rest,
        node_color='w', node_size=500,  alpha=0.8)

    nx.draw_networkx_edges(G,pos,width=1.0,alpha=0.5)


    plt.axis('off')
    plt.figure(i)

plt.show()

【问题讨论】:

  • 如果您将plt.show() 移动到循环中,您还会看到相同的内容吗?
  • 它有一个非常奇怪的行为。它为每个循环显示两个窗口,其中一个是空的,另一个是正确的。另一个问题是它等待我关闭它们,然后再继续显示下一个

标签: python matplotlib


【解决方案1】:

试试这个:

pos=nx.spring_layout(G) # positions for all nodes

for i in range(0, len(sets)):

    nx.draw_networkx_nodes(G,pos, sets[i],
    node_color='r', node_size=500,  alpha=0.8)

    rest = []
    for j in nodes:
            if j not in sets[i]:
                rest.append(j)

    nx.draw_networkx_nodes(G,pos, rest,
        node_color='w', node_size=500,  alpha=0.8)

    nx.draw_networkx_edges(G,pos,width=1.0,alpha=0.5)


    plt.axis('off')
    plt.show(block=False)

plt.show() 移动到循环中并删除plt.figure(i) 这样你就不会看到空的地块,也不需要手动关闭地块。

【讨论】:

  • 这确实有效,但我必须关闭一个窗口才能显示下一个窗口。我认为这很好。谢谢
  • 如果您认为它有帮助,请接受这个答案。赞赏!
猜你喜欢
  • 2021-01-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-20
  • 1970-01-01
  • 2022-01-21
  • 1970-01-01
相关资源
最近更新 更多