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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。