这是我的代码:
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()
所附图片中的预期结果与实际结果
请告诉我为什么我的六边形没有一条边并排而是相互重叠? 我在做什么错了?
答案 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)
这是一个正确的代码:
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 ...