我有一个由Networkx创建的无向图,我正在使用pyplot显示,我想允许用户指定网格线之间的间距。我不想手动输入刻度,因为这需要知道图的最终大小(如果有办法做到这一点,我想知道),这可能会根据显示的图形而有所不同。
有没有什么方法可以让你设置间距量?我找了一会儿,没有找到任何东西,谢谢。
下面的代码与绘图的创建有关,而不是图形。
#Spacing between each line
intervals = float(sys.argv[1])
nx.draw(displayGraph, pos, node_size = 10)
plt.axis('on')
plt.grid('on')
plt.savefig("test1.png")
我需要找到一种方法,让网格具有由用户定义的间距,我已经找到了方法,但它依赖于你想要多少网格线,这会导致线在图上的间距不均匀
3条答案
按热度按时间atmip9wb1#
不确定这是否违反了您不手动播放滴答声的愿望,但您可以使用
matplotlib.ticker
将滴答声设置为给定的间隔:wqnecbli2#
您可以使用ticker来设置网格的tick locations。用户可以指定MultipleThreshold的输入,这将“在视图间隔中为每个整数设置一个tick,该整数是base的倍数”。下面是一个例子:
编辑
要将此沿着用于Networkx,您可以使用上述子图(或其他函数)创建轴,并像这样传递该轴进行绘制。
或者你可以像你在问题中那样调用nx.draw,然后使用gca来获取当前轴:
5rgfhyps3#
例如,您可以使用
xlim
来获取x轴的范围,并使用用户指定的间隔,您应该能够使用ax.axvline
自己绘制网格,如本例中的https://stackoverflow.com/a/9128244/566035希望这对你有帮助。
(edit)这里有一个例子。