Matplotlib.patches.RegularPolygon class in Python
Matplotlib is an amazing visualization library in Python for 2D plots of arrays. Matplotlib is a multi-platform data visualization library built on NumPy arrays and designed to work with the broader SciPy stack.
matplotlib.patches.RegularPolygon
The matplotlib.patches.RegularPolygon class is used to add a regular polygon patch.
Syntax: class matplotlib.patches.RegularPolygon(xy, numVertices, radius=5, orientation=0, **kwargs)
Parameters:
- xy: A length 2 tuple (x, y) of the center.
- numVertices: It represents the number of vertices.
- radius: The distance from the center to each of the vertices.
- orientation: It is used to rotate the polygon (in radians).
The below table has a list of valid kwargs; PROPERTY DESCRIPTION agg_filter a filter function that takes a (m, n, 3) float array and a dpi value that returns a (m, n, 3) array alpha float or None animated bool antialiased or aa unknown capstyle {‘butt’, ’round’, ‘projecting’} clip_box Bbox clip_on bool clip_path [(Path, Transform)|Patch|None] color color or sequence of rgba tuples contains callable edgecolor or ec or edgecolors color or None or ‘auto’ facecolor or fc or facecolors color or None figure figure fill bool gid str hatch {‘/’, ‘\’, ‘|’, ‘-‘, ‘+’, ‘x’, ‘o’, ‘O’, ‘.’, ‘*’} in_layout bool joinstyle {‘miter’, ’round’, ‘bevel’} linestyle or ls {‘-‘, ‘–‘, ‘-.’, ‘:’, ”, (offset, on-off-seq), …} linewidth or linewidths or lw float or None path_effects AbstractPathEffect picker None or bool or float or callable path_effects AbstractPathEffect picker float or callable[[Artist, Event], Tuple[bool, dict]] rasterized bool or None sketch_params (scale: float, length: float, randomness: float) snap bool or None transform matplotlib.transforms.Transform url str visible bool zorder float
Example 1:
Python3
import matplotlib.pyplot as plt from matplotlib.patches import RegularPolygon import numpy as np coord = [[ 0 , 0 , 0 ], [ 0 , 1 , - 1 ], [ - 1 , 1 , 0 ], [ - 1 , 0 , 1 ], [ 0 , - 1 , 1 ], [ 1 , - 1 , 0 ], [ 1 , 0 , - 1 ]] colors = [[ "Green" ], [ "Green" ], [ "Green" ], [ "Green" ], [ "Green" ], [ "Green" ], [ "Green" ]] labels = [[ '1' ], [ '2' ], [ '3' ], [ '4' ], [ '5' ], [ '6' ], [ '7' ]] # Horizontal cartesian coords hcoord =
for c in coord] # Vertical cartersian coords vcoord = [ 2. * np.sin(np.radians( 60 )) * (c[ 1 ] - c[ 2 ]) / 3. for c in coord] fig, ax = plt.subplots( 1 ) ax.set_aspect( 'equal' ) # Add some coloured hexagons for x, y, c, l in zip (hcoord, vcoord, colors, labels): # matplotlib understands lower # case words for colours color = c[ 0 ].lower() hex = RegularPolygon((x, y), numVertices = 6 , radius = 2. / 3. , orientation = np.radians( 30 ), facecolor = color, alpha = 0.2 , edgecolor = 'k' ) ax.add_patch( hex ) # Also add a text label ax.text(x, y + 0.2 , l[ 0 ], ha = 'center' , va = 'center' , size = 20 ) # add scatter points in hexagon centers ax.scatter(hcoord, vcoord, c = .lower() for c in colors], alpha = 0.5 ) plt.show() |
Output:
Example 2:
Python3
import matplotlib.pyplot as plt from matplotlib.patches import RegularPolygon from matplotlib.collections import PatchCollection import numpy as np xy = np.random.random(( 10 , 2 )) z = np.random.random( 10 ) patches = [RegularPolygon((x, y), 5 , 0.1 ) for x, y in xy] collection = PatchCollection(patches, array = z, edgecolors = 'brown' , lw = 2 ) fig, ax = plt.subplots() ax.patch. set (facecolor = 'green' ) ax.add_collection(collection) ax.autoscale() plt.show() |
Output: