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))