当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python Matplotlib.artist.Artist.set_contains()用法及代码示例


Matplotlib是Python中的一个库,它是数字的-NumPy库的数学扩展。 Artist类包含用于呈现到FigureCanvas中的对象的Abstract基类。图中所有可见元素都是Artist的子类。

matplotlib.artist.Artist.set_contains()方法

matplotlib库的艺术家模块中的set_contains()方法用于定义艺术家的自定义包含测试。

用法:Artist.set_contains(self, picker)


参数:此方法接受以下参数,如下所述:

  • picker:此参数是自定义选择器函数,用于评估事件是否在艺术家中。

返回值:此方法不返回任何值。

以下示例说明了matplotlib中的matplotlib.artist.Artist.set_contains()函数:

范例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()

输出:

范例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()

输出:





注:本文由纯净天空筛选整理自SHUBHAMSINGH10大神的英文原创作品 Matplotlib.artist.Artist.set_contains() in Python。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。