當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


Python Matplotlib.axis.Axis.set_contains()用法及代碼示例

Matplotlib是Python中的一個庫,它是數字的-NumPy庫的數學擴展。它是Python中令人驚歎的可視化庫,用於數組的2D圖,並用於與更廣泛的SciPy堆棧配合使用。

Matplotlib.axis.Axis.set_contains()函數

matplotlib庫的axis模塊中的Axis.set_contains()函數用於定義藝術家的自定義包含測試。

用法: Axis.set_contains(self, picker) 
 

參數:此方法接受以下參數。

  • picker:此參數是自定義選擇器函數,用於評估事件是否在藝術家中。

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



以下示例說明了matplotlib.axis中的matplotlib.axis.Axis.set_contains()函數:
範例1:

Python3

# Implementation of matplotlib function 
from matplotlib.axis import Axis 
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())   
     
Axis.set_contains(ax2, picker = onpick1)  
fig.canvas.mpl_connect('pick_event', onpick1) 
  
fig.suptitle('matplotlib.axis.Axis.set_contains() \ 
function Example\n', fontweight ="bold")   
    
plt.show() 

輸出:

在圖上單擊:

onpick1 text:ylabel
onpick1 patch:Path(array([[0., 0.],
       [1., 0.],
       [1., 1.],
       [0., 1.],
       [0., 0.]]), array([ 1,  2,  2,  2, 79], dtype=uint8))
onpick1 patch:Path(array([[0., 0.],
       [1., 0.],
       [1., 1.],
       [0., 1.],
       [0., 0.]]), array([ 1,  2,  2,  2, 79], dtype=uint8))

範例2:

Python3

# Implementation of matplotlib function 
from matplotlib.axis import Axis 
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')   
    
Axis.set_contains(ax, picker = line_picker)  
    
fig.canvas.mpl_connect('pick_event', onpick2)  
  
fig.suptitle('matplotlib.axis.Axis.set_contains() \ 
function Example\n', fontweight ="bold")   
    
plt.show() 

輸出:




相關用法


注:本文由純淨天空篩選整理自SHUBHAMSINGH10大神的英文原創作品 Matplotlib.axis.Axis.set_contains() function in Python。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。