Skip to content
Related Articles

Related Articles

Improve Article
Save Article
Like Article

Matplotlib.artist.Artist.set_contains() in Python

  • Last Updated : 10 May, 2020

Matplotlib is a library in Python and it is numerical – mathematical extension for NumPy library. The Artist class contains Abstract base class for objects that render into a FigureCanvas. All visible elements in a figure are subclasses of Artist.

matplotlib.artist.Artist.set_contains() method

The set_contains() method in artist module of matplotlib library is used to define a custom contains test for the artist.

Syntax: Artist.set_contains(self, picker)

Parameters: This method accept the following parameters as discussed below:

  • picker : This parameter is the custom picker function to evaluate if an event is within the artist.

Returns: This method does not return any value.

Below examples illustrate the matplotlib.artist.Artist.set_contains() function in matplotlib:

Example 1:




# Implementation of matplotlib function
from matplotlib.artist import Artist
import matplotlib.pyplot as plt 
from matplotlib.lines import Line2D 
from matplotlib.patches import Rectangle 
from matplotlib.text import Text 
from matplotlib.image import AxesImage 
import numpy as np 
from numpy.random import rand 
    
    
fig, (ax1, ax2) = plt.subplots(2, 1
ax1.set_ylabel('ylabel', picker = True
               bbox = dict(facecolor ='red')) 
    
line, = ax1.plot(rand(100), 'go-'
    
ax2.bar(range(10), rand(10), picker = True
    
for label in ax2.get_xticklabels():  
    label.set_picker(True
    
def onpick1(event): 
        
    if isinstance(event.artist, Line2D): 
        thisline = event.artist 
        xdata = thisline.get_xdata() 
        ydata = thisline.get_ydata() 
        ind = event.ind 
        print('onpick1 line:', np.column_stack([xdata[ind], 
                                                ydata[ind]])) 
            
    elif isinstance(event.artist, Rectangle): 
        patch = event.artist 
        print('onpick1 patch:', patch.get_path()) 
            
    elif isinstance(event.artist, Text): 
        text = event.artist 
        print('onpick1 text:', text.get_text()) 
   
Artist.set_contains(ax2, picker = onpick1)
fig.canvas.mpl_connect('pick_event', onpick1) 
         
fig.suptitle('matplotlib.artist.Artist.set_contains() \
function Example', fontweight ="bold"
  
plt.show()

Output:

Example 2:




# Implementation of matplotlib function
from matplotlib.artist import Artist
import matplotlib.pyplot as plt 
from matplotlib.lines import Line2D 
from matplotlib.patches import Rectangle 
from matplotlib.text import Text 
from matplotlib.image import AxesImage 
import numpy as np 
from numpy.random import rand 
    
    
def line_picker(line, mouseevent): 
        
    if mouseevent.xdata is None
        return False, dict() 
        
    xdata = line.get_xdata() 
    ydata = line.get_ydata() 
    maxd = 0.05
    d = np.sqrt( 
        (xdata - mouseevent.xdata)**2 + (ydata - mouseevent.ydata)**2
    
    ind, = np.nonzero(d <= maxd) 
        
    if len(ind): 
            
        pickx = xdata[ind] 
        picky = ydata[ind] 
        props = dict(ind = ind, pickx = pickx, picky = picky) 
        return True, props 
        
    else
        return False, dict() 
    
def onpick2(event): 
        
    print('Result :', event.pickx, event.picky) 
    
fig, ax = plt.subplots() 
ax.plot(rand(100), rand(100), 'o'
  
Artist.set_contains(ax, picker = line_picker)
  
fig.canvas.mpl_connect('pick_event', onpick2) 
         
fig.suptitle('matplotlib.artist.Artist.set_contains() \
function Example', fontweight ="bold"
  
plt.show()

Output:


My Personal Notes arrow_drop_up
Recommended Articles
Page :

Start Your Coding Journey Now!