如何正确绘制带有偏移坐标的六边形?

时间:2019-11-26 00:47:38

标签: python matplotlib

这是我的代码:

import matplotlib.pyplot as plt
from matplotlib.patches import RegularPolygon
import numpy as np


offCoord = [[-2,-2],[-1,-2],[0,-2],[1,-2],[2,-2]]

fig, ax = plt.subplots(1)
ax.set_aspect('equal')

for c in offCoord:
    hex = RegularPolygon((c[0], c[1]), numVertices=6, radius=2./3., alpha=0.2, edgecolor='k')
    ax.add_patch(hex)
plt.autoscale(enable = True)
plt.show()

所附图片中的预期结果与实际结果

Expected result vs actual result

请告诉我为什么我的六边形没有一条边并排而是相互重叠? 我在做什么错了?

3 个答案:

答案 0 :(得分:2)

使用余弦定律(对于等腰三角形,其角度为120度,且边为r,r和1):

1 = r*r + r*r - 2*r*r*cos(2pi/3) = r*r + r*r + r*r = 3*r*r

r = sqrt(1/3)

triangle

这是一个正确的代码:

import matplotlib.pyplot as plt
from matplotlib.patches import RegularPolygon
import numpy as np


offCoord = [[-2,-2],[-1,-2],[0,-2],[1,-2],[2,-2]]

fig, ax = plt.subplots(1)
ax.set_aspect('equal')

for c in offCoord:
    # fix radius here
    hex = RegularPolygon((c[0], c[1]), numVertices=6, radius=np.sqrt(1/3), alpha=0.2, edgecolor='k')
    ax.add_patch(hex)
plt.autoscale(enable = True)
plt.show()

答案 1 :(得分:0)

很简单,您的几何形状错误。您指定的半径为2/3。检查您的文档中是否有RegularPolygon;我认为,您会发现正确的半径是0.577(sqrt(3)/ 3)或接近该值。

答案 2 :(得分:-1)

正六边形的半径等于其边。在这种情况下,适当的偏移量应为: offset = radius*3**0.5。如果半径为2/3,则偏移应为1.1547k,其中k = -2,-1 ...