4

使用 networkX 和 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)
4

2 回答 2

3

您可以使用ax.set_xlimandax.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_xlimand之前ax.set_ylim),请使用

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

ax.get_ylim()
(-0.20000000000000001, 1.2000000000000002)
于 2013-07-03T19:20:09.627 回答
0

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

于 2013-07-03T19:19:46.103 回答