本文整理汇总了Python中matplotlib.collections.PatchCollection.set_edgecolors方法的典型用法代码示例。如果您正苦于以下问题:Python PatchCollection.set_edgecolors方法的具体用法?Python PatchCollection.set_edgecolors怎么用?Python PatchCollection.set_edgecolors使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类matplotlib.collections.PatchCollection
的用法示例。
在下文中一共展示了PatchCollection.set_edgecolors方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: get_circles_for_scatter
# 需要导入模块: from matplotlib.collections import PatchCollection [as 别名]
# 或者: from matplotlib.collections.PatchCollection import set_edgecolors [as 别名]
def get_circles_for_scatter(x, y, color='black', edgecolor='none', colormap='jet', radius=0.01, colornorm=None, alpha=1, radiusnorm=None, maxradius=1, minradius=0):
cmap = plt.get_cmap(colormap)
if colornorm is not None:
colornorm = plt.Normalize(colornorm[0], colornorm[1], clip=True)
# setup normalizing for radius scale factor (if used)
if type(radius) is list or type(radius) is np.array or type(radius) is np.ndarray:
if radiusnorm is None:
radiusnorm = matplotlib.colors.Normalize(np.min(radius), np.max(radius), clip=True)
else:
radiusnorm = matplotlib.colors.Normalize(radiusnorm[0], radiusnorm[1], clip=True)
# make circles
points = np.array([x, y]).T
circles = [None for i in range(len(x))]
for i, pt in enumerate(points):
if type(radius) is list or type(radius) is np.array or type(radius) is np.ndarray:
r = radiusnorm(radius[i])*(maxradius-minradius) + minradius
else:
r = radius
circles[i] = patches.Circle( pt, radius=r )
# make a collection of those circles
cc = PatchCollection(circles, cmap=cmap, norm=colornorm) # potentially useful option: match_original=True
# set properties for collection
cc.set_edgecolors(edgecolor)
if type(color) is list or type(color) is np.array or type(color) is np.ndarray:
cc.set_array(color)
else:
cc.set_facecolors(color)
cc.set_alpha(alpha)
return cc
示例2: add_pmts
# 需要导入模块: from matplotlib.collections import PatchCollection [as 别名]
# 或者: from matplotlib.collections.PatchCollection import set_edgecolors [as 别名]
def add_pmts(ax=None, color='b', linewidth=1):
x0 = 27 # 9 times the inner radius
y0 = 6 * 3 * 2 / np.sqrt(3) # 6 times the outer radius
if ax is None:
ax = plt.gca()
per_row = [9, 10, 11, 10, 11, 10, 11, 10, 9]
polys = []
for row, num_pmts in enumerate(per_row):
y = row * 3 * np.sqrt(3)
for pmt in range(num_pmts):
x = 6 * pmt
if row in (0, 8):
x += 3
elif row % 2 == 0:
x -= 3
polys.append(RegularPolygon((x - x0, y - y0), 6, radius=6 / np.sqrt(3)))
col = PatchCollection(polys)
col.set_facecolors('none')
col.set_edgecolors(color)
col.set_linewidths(linewidth)
ax.add_artist(col)
return col
示例3: render
# 需要导入模块: from matplotlib.collections import PatchCollection [as 别名]
# 或者: from matplotlib.collections.PatchCollection import set_edgecolors [as 别名]
def render(self,ax,alpha=.7,usePyLeaflet=False,
minValueThreshold=-float('Inf'),logScale=True,colormapname='BlueRed'):
if not usePyLeaflet or colormapname=='nothingRed':
alpha=1.0
patches = []
values = []
colorvalues = []
for d in self.countPerGeohash.keys():
try:
if (self.countPerGeohash[d]>minValueThreshold):
bbox = geohash.bbox(d)
rect = mpatches.Rectangle([ bbox['w'],
bbox['s']],
bbox['e'] - bbox['w'],
bbox['n'] - bbox['s'],
ec='none', lw=.1, fc='red', alpha=alpha)
patches.append(rect)
# values.append(self.countPerGeohash[d] \
# if self.countPerGeohash[d]<3 else self.countPerGeohash[d]+10)
# colorvalues.append(self.countPerGeohash[d] \
# if self.countPerGeohash[d]<3 else self.countPerGeohash[d]+10)
values.append(self.countPerGeohash[d])
colorvalues.append(self.countPerGeohash[d])
except KeyError:
print("'"+d +"' is not a valid geohash.")
try:
maxval = max(values)
minval = min(values)
except ValueError:
print('heatmap appears to be empty...')
maxval = 1
minval = 0
p = PatchCollection(patches,cmap=plt.get_cmap(colormapname),alpha=alpha)
# if usePyLeaflet:
if (len(values)<100):
p.set_edgecolors(np.array(['black' for x in values]))
else:
p.set_edgecolors(np.array(['#333333' if x<=2 \
else ('#666666' if x<=10 else 'black') for x in values]))
# else:
# p.set_edgecolors(np.array(['white' for x in values]))
p.set_array(np.array(colorvalues))
if logScale:
p.set_norm(colors.LogNorm(vmin=.01, vmax=maxval))
else:
p.set_norm(colors.Normalize(vmin=0, vmax=maxval))
ax.add_collection(p)
ax.set_xlim(self.bbox['w'], self.bbox['e'])
ax.set_ylim(self.bbox['s'], self.bbox['n'])
divider = make_axes_locatable(ax)
cbar = plt.colorbar(p)
cbar.set_clim(vmin=max(0,minval),vmax=maxval)
cbar.update_normal(p)
return
示例4: get_ellipses_for_scatter
# 需要导入模块: from matplotlib.collections import PatchCollection [as 别名]
# 或者: from matplotlib.collections.PatchCollection import set_edgecolors [as 别名]
def get_ellipses_for_scatter(ax, x, y, color='black', edgecolor='none', colormap='jet', radius=0.01, colornorm=None, alpha=1, radiusnorm=None, maxradius=1, minradius=0):
# get ellipse size to make it a circle given axes
x0, y0 = ax.transAxes.transform((ax.get_ylim()[0],ax.get_xlim()[0]))
x1, y1 = ax.transAxes.transform((ax.get_ylim()[1],ax.get_xlim()[1]))
dx = x1-x0
dy = y1-y0
maxd = max(dx,dy)
cmap = plt.get_cmap(colormap)
if colornorm is not None:
colornorm = plt.Normalize(colornorm[0], colornorm[1], clip=True)
# setup normalizing for radius scale factor (if used)
if type(radius) is list or type(radius) is np.array or type(radius) is np.ndarray:
if radiusnorm is None:
radiusnorm = matplotlib.colors.Normalize(np.min(radius), np.max(radius), clip=True)
else:
radiusnorm = matplotlib.colors.Normalize(radiusnorm[0], radiusnorm[1], clip=True)
# make circles
points = np.array([x, y]).T
ellipses = [None for i in range(len(x))]
for i, pt in enumerate(points):
if type(radius) is list or type(radius) is np.array or type(radius) is np.ndarray:
r = radiusnorm(radius[i])*(maxradius-minradius) + minradius
else:
r = radius
width = r*2*maxd/dx
height = r*2*maxd/dy
ellipses[i] = patches.Ellipse( pt, width, height)
# make a collection of those circles
cc = PatchCollection(ellipses, cmap=cmap, norm=colornorm) # potentially useful option: match_original=True
# set properties for collection
cc.set_edgecolors(edgecolor)
if type(color) is list or type(color) is np.array or type(color) is np.ndarray:
cc.set_array(color)
else:
cc.set_facecolors(color)
cc.set_alpha(alpha)
return cc
示例5: scatter
# 需要导入模块: from matplotlib.collections import PatchCollection [as 别名]
# 或者: from matplotlib.collections.PatchCollection import set_edgecolors [as 别名]
def scatter(ax, x, y, color='black', colormap='jet', radius=0.01, colornorm=None, alpha=1, radiusnorm=None, maxradius=1, minradius=0, edgecolors='none'):
# color can be array-like, or a matplotlib color
# I can't figure out how to control alpha through the individual circle patches.. it seems to get overwritten by the collection. low priority!
cmap = plt.get_cmap(colormap)
if colornorm is not None:
colornorm = plt.Normalize(colornorm[0], colornorm[1], clip=True)
# setup normalizing for radius scale factor (if used)
if type(radius) is list or type(radius) is np.array or type(radius) is np.ndarray:
if radiusnorm is None:
radiusnorm = matplotlib.colors.Normalize(np.min(radius), np.max(radius), clip=True)
else:
radiusnorm = matplotlib.colors.Normalize(radiusnorm[0], radiusnorm[1], clip=True)
# make circles
points = np.array([x, y]).T
circles = [None for i in range(len(x))]
for i, pt in enumerate(points):
if type(radius) is list or type(radius) is np.array or type(radius) is np.ndarray:
r = radiusnorm(radius[i])*(maxradius-minradius) + minradius
else:
r = radius
circles[i] = patches.Circle( pt, radius=r )
# make a collection of those circles
cc = PatchCollection(circles, cmap=cmap, norm=colornorm) # potentially useful option: match_original=True
# set properties for collection
cc.set_edgecolors(edgecolors)
if type(color) is list or type(color) is np.array or type(color) is np.ndarray:
cc.set_array(color)
else:
cc.set_facecolors(color)
cc.set_alpha(alpha)
# add collection to axis
ax.add_collection(cc)
示例6: get_wedges_for_heading_plot
# 需要导入模块: from matplotlib.collections import PatchCollection [as 别名]
# 或者: from matplotlib.collections.PatchCollection import set_edgecolors [as 别名]
def get_wedges_for_heading_plot(x, y, color, orientation, size_radius=0.1, size_angle=20, colormap='jet', colornorm=None, size_radius_range=(0.01,.1), size_radius_norm=None, edgecolor='none', alpha=1, flip=True, deg=True, nskip=0, center_offset_fraction=0.75):
'''
Returns a Patch Collection of Wedges, with arbitrary color and orientation
Outputs:
Patch Collection
Inputs:
x, y - x and y positions (np.array or list, each of length N)
color - values to color wedges by (np.array or list, length N), OR color string.
colormap - specifies colormap to use (string, eg. 'jet')
norm - specifies range you'd like to normalize to,
if none, scales to min/max of color array (2-tuple, eg. (0,1) )
orientation - angles are in degrees, use deg=False to convert radians to degrees
size_radius - radius of wedge, in same units as x, y. Can be list or np.array, length N, for changing sizes
size_radius_norm - specifies range you'd like to normalize size_radius to, if size_radius is a list/array
should be tuple, eg. (0.01, .1)
size_angle - angular extent of wedge, degrees. Can be list or np.array, length N, for changing sizes
edgecolor - color for lineedges, string or np.array of length N
alpha - transparency (single value, between 0 and 1)
flip - flip orientations by 180 degrees, default = True
nskip - allows you to skip between points to make the points clearer, nskip=1 skips every other point
center_offset_fraction - (float in range (0,1) ) - 0 means (x,y) is at the tip, 1 means (x,y) is at the edge
'''
cmap = plt.get_cmap(colormap)
# norms
if colornorm is None and type(color) is not str:
colornorm = plt.Normalize(np.min(color), np.max(color))
elif type(color) is not str:
colornorm = plt.Normalize(colornorm[0], colornorm[1])
if size_radius_norm is None:
size_radius_norm = plt.Normalize(np.min(size_radius), np.max(size_radius), clip=True)
else:
size_radius_norm = plt.Normalize(size_radius_norm[0], size_radius_norm[1], clip=True)
indices_to_plot = np.arange(0, len(x), nskip+1)
# fix orientations
if type(orientation) is list:
orientation = np.array(orientation)
if deg is False:
orientation = orientation*180./np.pi
if flip:
orientation += 180
flycons = []
n = 0
for i in indices_to_plot:
# wedge parameters
if type(size_radius) is list or type(size_radius) is np.array or type(size_radius) is np.ndarray:
r = size_radius_norm(size_radius[i])*(size_radius_range[1]-size_radius_range[0]) + size_radius_range[0]
else: r = size_radius
if type(size_angle) is list or type(size_angle) is np.array or type(size_angle) is np.ndarray:
angle_swept = size_radius[i]
else: angle_swept = size_radius
theta1 = orientation[i] - size_angle/2.
theta2 = orientation[i] + size_angle/2.
center = [x[i], y[i]]
center[0] -= np.cos(orientation[i]*np.pi/180.)*r*center_offset_fraction
center[1] -= np.sin(orientation[i]*np.pi/180.)*r*center_offset_fraction
wedge = patches.Wedge(center, r, theta1, theta2)
flycons.append(wedge)
# add collection and color it
pc = PatchCollection(flycons, cmap=cmap, norm=colornorm)
# set properties for collection
pc.set_edgecolors(edgecolor)
if type(color) is list or type(color) is np.array or type(color) is np.ndarray:
if type(color) is list:
color = np.asarray(color)
pc.set_array(color[indices_to_plot])
else:
pc.set_facecolors(color)
pc.set_alpha(alpha)
return pc
示例7: factcamera
# 需要导入模块: from matplotlib.collections import PatchCollection [as 别名]
# 或者: from matplotlib.collections.PatchCollection import set_edgecolors [as 别名]
#.........这里部分代码省略.........
Attributes
----------
data : array like with shape 1440
the data you want to plot into the pixels
pixelset : boolean array with shape 1440
the pixels where pixelset is True are marked with 'pixelsetcolour'
[default: None]
pixelsetcolour : a matplotlib conform colour representation
the colour for the pixels in 'pixelset',
[default: green]
pixelcoords : the coordinates for the pixels in form [x-values, y-values]
if None, the package resource is used
[default: None]
cmap : str or matplotlib colormap instance
the colormap to use for plotting the 'dataset'
[default: gray]
vmin : float
the minimum for the colorbar, if None min(dataset[event]) is used
[default: None]
vmax : float
the maximum for the colorbar, if None max(dataset[event]) is used
[default: None]
picker: bool
if True then the the pixel are made clickable to show information
"""
self.set_aspect('equal')
if picker is True:
fig = self.get_figure()
fig.canvas.mpl_connect("pick_event", onpick)
# if the axes limit is still (0,1) assume new axes
if self.get_xlim() == (0, 1) and self.get_ylim() == (0, 1):
self.set_xlim(-200, 200)
self.set_ylim(-200, 200)
if pixelcoords is None:
pixel_x, pixel_y = get_pixel_coords()
else:
pixel_x, pixel_y = pixelcoords
if vmin is None:
vmin = np.min(data)
if vmax is None:
vmax = np.max(data)
edgecolors = np.array(1440*["k"])
if pixelset is None:
pixelset = np.zeros(1440, dtype=np.bool)
_pixelset = np.array(pixelset)
if _pixelset.ndim == 1:
if _pixelset.shape != (1440,):
pixelset = np.zeros(1440, dtype=np.bool)
pixelset[_pixelset] = True
else:
pixelset = np.array(_pixelset, dtype=np.bool)
edgecolors[pixelset] = pixelsetcolour
elif _pixelset.ndim == 2:
for pixelset, colour in zip(_pixelset, pixelsetcolour):
edgecolors[pixelset] = colour
intersect = np.logical_and(_pixelset[0], _pixelset[1])
edgecolors[intersect] = intersectcolour
else:
raise ValueError(
"""pixelset needs to be one of:
1. list of pixelids
2. 1d bool array with shape (1440,)
3. 2d bool array with shape (2, 1440)
"""
)
patches = []
for x, y, ec in zip(pixel_x, pixel_y, edgecolors):
patches.append(
RegularPolygon(
xy=(x, y),
numVertices=6,
radius=0.95*9.5/np.sqrt(3),
orientation=0., # in radians
)
)
if linewidth is None:
linewidth = calc_linewidth(self)
collection = PatchCollection(patches, picker=0)
collection.set_linewidth(linewidth)
collection.set_edgecolors(edgecolors)
collection.set_cmap(cmap)
collection.set_array(data)
collection.set_clim(vmin, vmax)
self.add_collection(collection)
return collection