【问题标题】:Matplotlib savefig() on a zoomed in graph放大图上的 Matplotlib savefig()
【发布时间】:2013-07-01 14:43:19
【问题描述】:

Drawing a huge graph with networkX and matplotlib

我基本上是在重新提出链接的问题。我想我可以更好地解释这个问题。在大图上调用 mathplotlib.show() 时,默认是缩小的集群输出。我想要的最终状态是使用 mathplotlib.savefig() 保存绘图以在报告中使用。但是,savefig() 输出过于缩小,过于笼统。更改图像大小或 dpi 并不能解决此问题。只会使缩小的图像更大。有没有办法在不使用 UI 的情况下放大图表并保存它?使用 UI,我可以放大、展开节点并以相关节点为中心,但我不知道如何自动执行此操作。

相关代码:

    nx.draw(G,pos,node_color=colorvalues, with_labels = False,node_size=values)
    fig.set_size_inches(11,8.5)
    if show ==0:
        plt.show()
    if show ==1:   
        plt.savefig(name+" coremem.png",bbox_inches=0,orientation='landscape',pad_inches=0.1)

【问题讨论】:

    标签: python matplotlib networkx


    【解决方案1】:

    您可以使用ax.set_xlimax.set_ylim 设置绘图的xy 范围。例如,

    import networkx as nx
    import matplotlib.pyplot as plt
    import numpy as np
    
    filename = '/tmp/graph.png'
    G = nx.complete_graph(10)
    pos = nx.spring_layout(G)
    xy = np.row_stack([point for key, point in pos.iteritems()])
    x, y = np.median(xy, axis=0)
    fig, ax = plt.subplots()
    nx.draw(G, pos, with_labels=False, node_size=1)
    ax.set_xlim(x-0.25, x+0.25)
    ax.set_ylim(y-0.25, y+0.25)
    plt.savefig(filename, bbox_inches=0, orientation='landscape', pad_inches=0.1)
    


    要找出原始限制(在调用ax.set_xlimax.set_ylim 之前),请使用

    >>> ax.get_xlim()
    (-0.20000000000000001, 1.2000000000000002)
    
    ax.get_ylim()
    (-0.20000000000000001, 1.2000000000000002)
    

    【讨论】:

    • 谢谢。这么简单的命令,我傻傻的忽略了。我目前正在尝试找出一种数学方法来自动确定网络的中心质量并放大到它。例如,我分别有节点的 xvalues 和 yvalues 列表。我已经完成了 ax.set_xlim(min(xval)-.25,max(xval)+.25),对于 yvalues 也是如此。 .25 是一个很好的缓冲。我的问题是,在 spring_layout 中的一个大图中,两个相互连接但与其他节点未连接的节点会相距甚远,以至于它会破坏我的算法......我会努力解决这个问题......跨度>
    • 您可以使用pos 给出的节点xy 位置的中值来代替质心。我在上面添加了一些代码来说明我的意思。
    【解决方案2】:

    据我所知,您无法缩放,但您可以设置坐标轴。例如,如果您的原始图表在两个轴上都从 1 到 100,您可以通过编程使其从 30 变为 40 并保存。

    【讨论】:

      猜你喜欢
      • 2012-10-12
      • 2012-10-15
      • 2011-03-08
      • 1970-01-01
      • 2016-07-02
      • 2012-02-16
      • 2018-04-06
      • 1970-01-01
      • 2018-01-12
      相关资源
      最近更新 更多