Python 如何正确绘制具有偏移坐标的六边形?
这是我的代码:Python 如何正确绘制具有偏移坐标的六边形?,python,matplotlib,coordinate-systems,hexagonal-tiles,Python,Matplotlib,Coordinate Systems,Hexagonal Tiles,这是我的代码: 导入matplotlib.pyplot作为plt 从matplotlib.patches导入RegularPolygon 将numpy作为np导入 offCoord=[-2,-2],-1,-2],[0,-2],[1,-2],[2,-2]] 图,ax=plt子批次(1) ax.set_方面(“相等”) 对于offCoord中的c: 十六进制=规则多边形((c[0],c[1]),曲率=6,半径=2./3,α=0.2,边色=k') ax.添加补丁(十六进制) plt.自动缩放(启用=真
导入matplotlib.pyplot作为plt
从matplotlib.patches导入RegularPolygon
将numpy作为np导入
offCoord=[-2,-2],-1,-2],[0,-2],[1,-2],[2,-2]]
图,ax=plt子批次(1)
ax.set_方面(“相等”)
对于offCoord中的c:
十六进制=规则多边形((c[0],c[1]),曲率=6,半径=2./3,α=0.2,边色=k')
ax.添加补丁(十六进制)
plt.自动缩放(启用=真)
plt.show()
附加图像中的预期结果与实际结果
请告诉我为什么我的六边形不是一条一条地排列,而是相互重叠?
我做错了什么?很简单,你的几何图形错了。您指定的半径为2/3。检查您的文档中是否有
RegularPolygon
;我想你会发现正确的半径是0.577(sqrt(3)/3)或者接近这个值。正六边形的半径等于它的边。在这种情况下,适当的偏移量应为:
偏移=半径*3**0.5
。如果半径为2/3,偏移量应为1.1547k,其中k=-2,-1…使用余弦定律(对于角度为120度且边为r、r和1的等腰三角形):
这是正确的代码:
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
hexagon = RegularPolygon((c[0], c[1]), numVertices=6, radius=np.sqrt(1/3), alpha=0.2, edgecolor='k')
ax.add_patch(hexagon)
plt.autoscale(enable = True)
plt.show()
半径
太大。看起来像是RegularPolygon
将“半径”定义为中心和每个顶点之间的距离。因此,需要使用一些几何图形来计算该值,以便从中心到边的距离为1。
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
hexagon = RegularPolygon((c[0], c[1]), numVertices=6, radius=np.sqrt(1/3), alpha=0.2, edgecolor='k')
ax.add_patch(hexagon)
plt.autoscale(enable = True)
plt.show()