PyPlot - 设置绘图的网格线间距

新手上路,请多包涵

我有一个由 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")

我需要找到一种方法让网格具有用户定义的间距。我已经找到了方法,但它还依赖于说明你想要多少条网格线,这会导致这些线在绘图上的间距不均匀

原文由 HFulcher 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.4k
2 个回答

不确定这是否违背了您不想手动玩滴答声的愿望,但您可以使用 matplotlib.ticker 将滴答声设置为您给定的间隔:

 import matplotlib.pyplot as plt
import matplotlib.ticker as plticker

fig,ax=plt.subplots()

#Spacing between each line
intervals = float(sys.argv[1])

loc = plticker.MultipleLocator(base=intervals)
ax.xaxis.set_major_locator(loc)
ax.yaxis.set_major_locator(loc)

# Add the grid
ax.grid(which='major', axis='both', linestyle='-')

原文由 tmdavison 发布,翻译遵循 CC BY-SA 3.0 许可协议

您可以使用 ticker 设置网格的 刻度位置。用户可以指定 MultipleLocator 的输入,这将“在视图间隔中的每个整数上设置一个标记”。这是一个例子:

 from matplotlib import pyplot as plt
from matplotlib.ticker import MultipleLocator
import numpy as np

# Two example plots
fig = plt.figure()
ax1 = fig.add_subplot(2,2,1)
ax2 = fig.add_subplot(2,2,2)

spacing = 0.5 # This can be your user specified spacing.
minorLocator = MultipleLocator(spacing)
ax1.plot(9 * np.random.rand(10))
# Set minor tick locations.
ax1.yaxis.set_minor_locator(minorLocator)
ax1.xaxis.set_minor_locator(minorLocator)
# Set grid to use minor tick locations.
ax1.grid(which = 'minor')

spacing = 1
minorLocator = MultipleLocator(spacing)
ax2.plot(9 * np.random.rand(10))
# Set minor tick locations.
ax2.yaxis.set_minor_locator(minorLocator)
ax2.xaxis.set_minor_locator(minorLocator)
# Set grid to use minor tick locations.
ax2.grid(which = 'minor')

plt.show()

具有不同网格的两个子图。

编辑

要将其与 Networkx 一起使用,您可以使用上面的子图(或其他一些函数)创建轴,然后传递该轴以像这样 绘制

 nx.draw(displayGraph, pos, ax=ax1, node_size = 10)

或者您可以像在问题中那样调用 nx.draw ,然后使用 gca 获取当前轴:

 nx.draw(displayGraph, pos, node_size = 10)
ax1 = plt.gca()

原文由 Molly 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题