Torah_Codes / lib /latticegrid.py
cryptocalypse's picture
clases refactor draft, I class
8b82e6e
raw
history blame
1.32 kB
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.patches import RegularPolygon
## set texto over lattice grid
def hex_lattice(text, size=1, figsize=(8, 8)):
fig, ax = plt.subplots(figsize=figsize)
ax.set_aspect('equal')
ax.axis('off')
# Define hexagonal lattice parameters
radius = size * np.sqrt(3) / 2
x_offset = size * 1.5
y_offset = size * np.sqrt(3)
# Function to plot hexagon
def hexagon(x, y, color='white'):
hexagon = RegularPolygon((x, y), numVertices=6, radius=radius, orientation=np.pi/2, facecolor=color, edgecolor='black')
ax.add_patch(hexagon)
# Generate lattice grid
rows = len(text)
cols = max(len(row) for row in text)
for r in range(rows):
for c in range(cols):
x = c * x_offset
y = r * y_offset
if r % 2 == 1:
x += x_offset / 2
if r < len(text) and c < len(text[r]):
hexagon(x, y, color='lightblue')
ax.text(x, y, text[r][c], ha='center', va='center', fontsize=12)
plt.show()
if __name__ == "__main__":
# Example usage:
text_to_display = [
['A', 'B', 'C', 'D'],
['E', 'F', 'G'],
['H', 'I', 'J', 'K', 'L']
]
hex_lattice(text_to_display, size=1, figsize=(10, 8))