本文整理汇总了Python中matplotlib.collections.RegularPolyCollection.get_edgecolors方法的典型用法代码示例。如果您正苦于以下问题:Python RegularPolyCollection.get_edgecolors方法的具体用法?Python RegularPolyCollection.get_edgecolors怎么用?Python RegularPolyCollection.get_edgecolors使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类matplotlib.collections.RegularPolyCollection
的用法示例。
在下文中一共展示了RegularPolyCollection.get_edgecolors方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: __init__
# 需要导入模块: from matplotlib.collections import RegularPolyCollection [as 别名]
# 或者: from matplotlib.collections.RegularPolyCollection import get_edgecolors [as 别名]
class LassoManager:
def __init__(self, ax, data,labels=None, color_on='r', color_off='k'):
self.axes = ax
self.canvas = ax.figure.canvas
self.data = data
self.call_list = []
self.Nxy = data.shape[0]
self.color_on = colorConverter.to_rgba(color_on)
self.color_off = colorConverter.to_rgba(color_off)
facecolors = [self.color_on for _ in range(self.Nxy)]
fig = ax.figure
self.collection = RegularPolyCollection(
fig.dpi, 6, sizes=(1,),
facecolors=facecolors,
edgecolors=facecolors,
offsets = self.data,
transOffset = ax.transData)
ax.add_collection(self.collection, autolim=True)
ax.autoscale_view()
if labels is not None:
ax.set_xlabel(labels[0])
ax.set_ylabel(labels[1])
self.cid = self.canvas.mpl_connect('button_press_event', self.onpress)
self.ind = None
self.canvas.draw()
def register(self, callback_func):
self.call_list.append(callback_func)
def callback(self, verts):
facecolors = self.collection.get_facecolors()
edgecolors = self.collection.get_edgecolors()
ind = nonzero(points_inside_poly(self.data, verts))[0]
for i in range(self.Nxy):
if i in ind:
facecolors[i] = self.color_on
edgecolors[i] = self.color_on
else:
facecolors[i] = self.color_off
edgecolors[i] = self.color_off
self.canvas.draw_idle()
self.canvas.widgetlock.release(self.lasso)
del self.lasso
self.ind = ind
for func in self.call_list:
func(ind)
def onpress(self, event):
if self.canvas.widgetlock.locked(): return
if event.inaxes is None: return
self.lasso = Lasso(event.inaxes, (event.xdata, event.ydata), self.callback)
# acquire a lock on the widget drawing
self.canvas.widgetlock(self.lasso)
示例2: __init__
# 需要导入模块: from matplotlib.collections import RegularPolyCollection [as 别名]
# 或者: from matplotlib.collections.RegularPolyCollection import get_edgecolors [as 别名]
class LassoManager:
def __init__(self, ax, data, fs_list, plkwargs, max_collection=500):
if pyfusion.VERBOSE>2:
print("init, fs_list size=%d" % (len(fs_list)))
self.axes = ax
self.canvas = ax.figure.canvas
self.data = data
self.fs_list = fs_list
self.plkwargs = plkwargs
self.Nxy = len(data)
facecolors = [d.color for d in data]
self.xys = [(d.x, d.y) for d in data]
fig = ax.figure
# here we define the polygons that indicate that a point is registered
# - use empty triangles for simplicity and speed
# skip altogether if there are too many
# not sure how much this saves - each point still is a datum
if (self.Nxy<max_collection):
self.collection = RegularPolyCollection(
3, 0, sizes=(100,),facecolors='', edgecolors=facecolors,
offsets = self.xys, transOffset = ax.transData)
ax.add_collection(self.collection)
else: self.collection = None
self.cid = self.canvas.mpl_connect('button_press_event', self.onpress)
print("connected cid=%d" % (self.cid) )
self.ind = None
def callback(self, verts):
ind = nonzero(points_inside_poly(self.xys, verts))[0]
if pyfusion.VERBOSE>2: print len(self.xys)
if pyfusion.VERBOSE>0:
print("Try to match the following points to %d fs in list:" % (len(self.fs_list)))
print [self.xys[i] for i in ind]
if self.collection != None:
edgecolors = self.collection.get_edgecolors()
for i in range(self.Nxy):
if i in ind:
edgecolors[i] = Datum.colorin
else:
edgecolors[i] = Datum.colorout
print(self)
xarr = [xy[0] for xy in self.xys]
yarr = [xy[1] for xy in self.xys]
fstarr = array(self.fs_list['t_mid'])
fsfarr = array(self.fs_list['freq'])
if pyfusion.VERBOSE>5:
print("xarr = %s, fsfarr = %s, fstarr=%s, ind = %s" % (xarr, fsfarr, fstarr, ind))
for i in ind:
match = (abs(xarr[i] - fstarr) + abs(yarr[i] - fsfarr))< 1e-3
matchinds = match.nonzero()[0]
if pyfusion.VERBOSE>5: print("matches", matchinds)
if len(matchinds)>6:
print('only showing first 6...')
matchinds = matchinds[0:10]
for m in matchinds:
#self.fs_list[m].plot(**self.plkwargs)
print("shot {0}, time {1} s".format(self.fs_list['shot'][m],self.fs_list['t_mid'][m]))
self.canvas.draw_idle()
self.canvas.widgetlock.release(self.lasso)
del self.lasso
self.ind = ind
def onpress(self, event):
if self.canvas.widgetlock.locked(): return
if event.inaxes is None: return
if pyfusion.VERBOSE>7: print event.xdata
# left button is normal - right does lasso - but this seesm to hang - crash?
## if event.button == 1: self.canvas.button_press_event(event)
self.lasso = Lasso(event.inaxes, (event.xdata, event.ydata), self.callback)
# acquire a lock on the widget drawing
self.canvas.widgetlock(self.lasso)