【问题标题】:High Resolution Image of a Graph using NetworkX and Matplotlib使用 NetworkX 和 Matplotlib 的图形的高分辨率图像
【发布时间】:2016-07-15 08:03:44
【问题描述】:

我有一个 python 代码来生成一个包含 300 个节点和 200 条边的随机图并显示它

import networkx as nx
import matplotlib.pyplot as plt

G = nx.gnm_random_graph(300,200)
graph_pos = nx.spring_layout(G)
nx.draw_networkx_nodes(G, graph_pos, node_size=10, node_color='blue', alpha=0.3)
nx.draw_networkx_edges(G, graph_pos)
nx.draw_networkx_labels(G, graph_pos, font_size=8, font_family='sans-serif')
plt.show()

但是,因为节点太多,我需要有更多的像素,这样我才能放大保存。

如果我放

plt.figure(figsize=(18,18))

在显示之前,节点和边不会出现。有什么问题,我该如何解决?

【问题讨论】:

    标签: python matplotlib networkx


    【解决方案1】:

    绘图窗口使用屏幕分辨率,您可以缩放它而不会丢失信息。如果您在显示之前添加figure,则唯一应该发生的事情是会出现两个窗口(因为您已经有一个图形在工作)。因此,如果您想自定义图形大小,请在填充绘图之前执行此操作:

    import networkx as nx
    import matplotlib.pyplot as plt
    
    plt.figure(figsize=(18,18))
    
    G = nx.gnm_random_graph(300,200)
    graph_pos = nx.spring_layout(G)
    nx.draw_networkx_nodes(G, graph_pos, node_size=10, node_color='blue', alpha=0.3)
    nx.draw_networkx_edges(G, graph_pos)
    nx.draw_networkx_labels(G, graph_pos, font_size=8, font_family='sans-serif')
    
    plt.show()
    

    要获得可以缩放的图像(此处分辨率很重要)并避免看到大像素,您可以:

    plt.savefig("plot.png", dpi=1000)
    

    ,保存具有非常大 dpi 的 png。或者:

    plt.savefig("plot.pdf")
    

    ,它将绘图保存为矢量图形(转换为 pdf)。 Matplotlib 绘图窗口有一个工具可以让您放大绘图的任何部分:

    【讨论】:

      猜你喜欢
      • 2017-02-13
      • 2014-11-20
      • 2011-04-07
      • 1970-01-01
      • 2020-06-04
      • 1970-01-01
      • 2010-10-19
      • 2017-08-23
      • 2013-08-25
      相关资源
      最近更新 更多