gpt4 book ai didi

python - 在 Python 中绘制原子的 2D 方形晶格的最佳方法?

转载 作者:行者123 更新时间:2023-12-03 23:06:42 25 4
gpt4 key购买 nike

问题总结:
我正在研究一个物理问题,我想绘制一个二维原子晶格,其中节点已使用箭头连接,如下所示 2D lattice figure .

我试过的:
我试过使用 grid_2d_graph来自 NetworkX,从这里获得帮助 answer但无法让它像我想要的那样工作。我使用的代码如下:

G = nx.grid_2d_graph(4,4)
pos = dict( (n, n) for n in G.nodes() )
nx.draw_networkx(G, pos=pos)
plt.axis('off')
plt.show()

这产生了以下 image ,这不是我的想法。

最佳答案

这是使用 matplotlib 的简单方法的 arrow .它要求将网格(图形)表示为字典,其中键是网格上的点(节点)坐标,值是应绘制向外箭头(边)的相邻点。当网格的大小发生变化时,您可能需要使用 w , h等等来控制绘制元素的大小。

grid = {  # point(x, y), outgoing connections [points] 
(0, 0): [(0, 1), (1, 0)],
(0, 1): [],
(1, 0): [],
(1, 1): [(1, 0), (0, 1)]
}

w = 0.005 # Errorwidth
h = 0.05 # Errorhead width

fig, ax = plt.subplots()
for point, connections in grid.items():
for outgoing in connections:
dx = outgoing[0] - point[0]
dy = outgoing[1] - point[1]
ax.arrow(point[0], point[1],
dx / 2, dy / 2,
width=w, head_width=h,
facecolor="k",
zorder=0)
ax.arrow(point[0] + dx / 2,
point[1] + dy / 2,
dx / 2, dy / 2,
width=w, head_width=0,
facecolor="k",
zorder=0)
ax.plot(*point,
marker="o", markersize=10, markeredgecolor="k",
markerfacecolor="red",
zorder=1)

enter image description here

关于python - 在 Python 中绘制原子的 2D 方形晶格的最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62144935/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com