Drawing circles on an image using matplotlib and numpy

I have float x / y arrays that contain a circle .

import matplotlib.pylab as plt import numpy as np npX = np.asarray(X) npY = np.asarray(Y) plt.imshow(img) // TO-DO plt.show() 

I want to show circles on my image using these centers. How can I achieve this?

+7
python numpy matplotlib plot imshow
source share
1 answer

You can do this with the matplotlib.patches.Circle patch.

For your example, we need to go through the X and Y arrays, and then create a patch for each coordinate.

Here's an example of placing circles on top of an image (from matplotlib.cbook )

 import matplotlib.pyplot as plt import numpy as np from matplotlib.patches import Circle # Get an example image import matplotlib.cbook as cbook image_file = cbook.get_sample_data('grace_hopper.png') img = plt.imread(image_file) # Make some example data x = np.random.rand(5)*img.shape[1] y = np.random.rand(5)*img.shape[0] # Create a figure. Equal aspect so circles look circular fig,ax = plt.subplots(1) ax.set_aspect('equal') # Show the image ax.imshow(img) # Now, loop through coord arrays, and create a circle at each x,y pair for xx,yy in zip(x,y): circ = Circle((xx,yy),50) ax.add_patch(circ) # Show the image plt.show() 

enter image description here

+10
source share

All Articles