Python matplotlib.colors 模块,Boundarynorm() 实例源码
我们从Python开源项目中,提取了以下14个代码示例,用于说明如何使用matplotlib.colors.Boundarynorm()。
def displayBrain(brain, res=25):
mapV, mapA = mapBrain(brain, res)
plt.close()
plt.show()
fig = plt.figure(figsize=(5,7))
fig.add_subplot(211)
plt.imshow(mapV)
plt.colorbar(orientation='vertical')
fig.add_subplot(212)
cmap = colors.ListedColormap(['yellow', 'blue', 'white', 'red'])
bounds=[-1.5,-0.5,0.5,1.5,2.5]
norm = colors.Boundarynorm(bounds, cmap.N)
plt.imshow(mapA, cmap=cmap, norm=norm)
cb = plt.colorbar(orientation='vertical', ticks=[-1,0,1,2])
plt.pause(0.001)
def save_image(folder='images'):
"""
Coroutine of image saving
"""
from matplotlib import pyplot as plt
from matplotlib import colors
if folder not in os.listdir('.'):
os.mkdir(folder)
frame_cnt = it.count()
cmap = colors.ListedColormap(['#009688', '#E0F2F1', '#004D40'])
bounds = [0, 0.25, 0.75, 1]
norm = colors.Boundarynorm(bounds, cmap.N)
while True:
screen = (yield)
shape = screen.shape
plt.imshow(
screen,
interpolation='none',
cmap=cmap,
norm=norm,
aspect='equal',
extent=(0, shape[1], 0, shape[0]))
plt.grid(True)
plt.axis('off')
plt.savefig('%s/frame%06i.png' % (folder, frame_cnt.next()))
def add_color_bar(ax, cmap, labels):
"""Add a colorbar to an axis.
Args:
ax (Axessubplot)
cmap (Colormap): A prepaped colormap of size n.
labels (list of str): A list of strings of size n.
"""
norm = clr.Boundarynorm(list(range(cmap.N+1)), cmap.N)
smap = cm.ScalarMappable(norm=norm, cmap=cmap)
smap.set_array([])
cbar = plt.colorbar(smap, ax=ax)
cbar.set_ticks([i + 0.5 for i in range(cmap.N)])
cbar.set_ticklabels(labels)
def show_all(gt, pred):
import matplotlib.pyplot as plt
from matplotlib import colors
from mpl_toolkits.axes_grid1 import make_axes_locatable
fig, axes = plt.subplots(1, 2)
ax1, ax2 = axes
classes = np.array(('background', # always index 0
'aeroplane', 'bicycle', 'bird', 'boat',
'bottle', 'bus', 'car', 'cat', 'chair',
'cow', 'diningtable', 'dog', 'horse',
'motorbike', 'person', 'pottedplant',
'sheep', 'sofa', 'train', 'tvmonitor'))
colormap = [(0,0),(0.5,(0,0.5),
(0.5,(0.25,(0.75,
(0.75,0.25,0.75,0.5)]
cmap = colors.ListedColormap(colormap)
bounds=[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21]
norm = colors.Boundarynorm(bounds, cmap.N)
ax1.set_title('gt')
ax1.imshow(gt, norm=norm)
ax2.set_title('pred')
ax2.imshow(pred, norm=norm)
plt.show()
def _proportional_y(self):
'''
Return colorbar data coordinates for the boundaries of
a proportional colorbar.
'''
if isinstance(self.norm, colors.Boundarynorm):
y = (self._boundaries - self._boundaries[0])
y = y / (self._boundaries[-1] - self._boundaries[0])
else:
y = self.norm(self._boundaries.copy())
if self.extend == 'min':
# Exclude leftmost interval of y.
clen = y[-1] - y[1]
automin = (y[2] - y[1]) / clen
automax = (y[-1] - y[-2]) / clen
elif self.extend == 'max':
# Exclude rightmost interval in y.
clen = y[-2] - y[0]
automin = (y[1] - y[0]) / clen
automax = (y[-2] - y[-3]) / clen
else:
# Exclude leftmost and rightmost intervals in y.
clen = y[-2] - y[1]
automin = (y[2] - y[1]) / clen
automax = (y[-2] - y[-3]) / clen
extendlength = self._get_extension_lengths(self.extendfrac,
automin, automax,
default=0.05)
if self.extend in ('both', 'min'):
y[0] = 0. - extendlength[0]
if self.extend in ('both', 'max'):
y[-1] = 1. + extendlength[1]
yi = y[self._inside]
norm = colors.normalize(yi[0], yi[-1])
y[self._inside] = norm(yi)
return y
def _locate(self, x):
'''
Given a set of color data values,return their
corresponding colorbar data coordinates.
'''
if isinstance(self.norm, (colors.Nonorm, colors.Boundarynorm)):
b = self._boundaries
xn = x
else:
# Do calculations using normalized coordinates so
# as to make the interpolation more accurate.
b = self.norm(self._boundaries, clip=False).filled()
xn = self.norm(x, clip=False).filled()
# The rest is linear interpolation with extrapolation at ends.
y = self._y
N = len(b)
ii = np.searchsorted(b, xn)
i0 = ii - 1
itop = (ii == N)
ibot = (ii == 0)
i0[itop] -= 1
ii[itop] -= 1
i0[ibot] += 1
ii[ibot] += 1
#db = b[ii] - b[i0]
db = np.take(b, ii) - np.take(b, i0)
#dy = y[ii] - y[i0]
dy = np.take(y, ii) - np.take(y, i0)
z = np.take(y, i0) + (xn - np.take(b, i0)) * dy / db
return z
def _proportional_y(self):
'''
Return colorbar data coordinates for the boundaries of
a proportional colorbar.
'''
if isinstance(self.norm, yi[-1])
y[self._inside] = norm(yi)
return y
def adjblocks(Y, clusters=None, title=''):
""" Make a colormap image of a matrix
:key Y: the matrix to be used for the colormap.
"""
# Artefact
#np.fill_diagonal(Y,0)
plt.figure()
if clusters is None:
plt.axis('off')
cmap = 'Greys'
norm = None
y = Y
else:
plt.axis('on')
y = reorder_mat(Y, clusters, reverse=True)
hist, label = clusters_hist(clusters)
# Colors Setup
u_colors.reset()
#cmap = Colors.ListedColormap(['white','black']+ u_colors.seq[:len(hist)**2])
cmap = Colors.ListedColormap(['#000000', '#FFFFFF']+ u_colors.seq[:len(hist)**2])
bounds = np.arange(len(hist)**2+2)
norm = Colors.Boundarynorm(bounds, cmap.N)
# Iterate over blockmodel
for k, count_k in enumerate(hist):
for l, count_l in enumerate(hist):
# Draw a colored square (not white and black)
topleft = (hist[:k].sum(), hist[:l].sum())
w = int(0.01 * y.shape[0])
# write on place
draw_square(y, k+l+2, topleft, count_k, count_l, w)
implt = plt.imshow(y, norm=norm,
clim=(np.amin(y), np.amax(y)),
interpolation='nearest',)
#origin='upper') # change shape !
#plt.colorbar()
plt.title(title)
#plt.savefig(filename,fig=fig,facecolor='white',edgecolor='black')
def percolation(matrice): # methode 2
"""Dessine la propagation de l'eau,et indique s'il y a percolation."""
cmap = colors.ListedColormap(couleurs) # Todo: Relève du display,à metttre ailleurs.
norm = colors.Boundarynorm(valeurs + [max(valeurs)+1], cmap.N)
pyplot.matshow([valeurs], 1, norm=norm)
pyplot.pause(1)
eau_mouvante = initialisation_eau_mouvante(matrice)
while eau_mouvante != []:
pyplot.matshow(matrice, norm=norm) # Todo: Séparer la logique de display de la logique de génération (threads ?)
pyplot.pause(.0001)
eau_mouvante = propagation(matrice,eau_mouvante)
return resultat(matrice)
def _ticker(self):
'''
Return two sequences: ticks (colorbar data locations)
and ticklabels (strings).
'''
locator = self.locator
formatter = self.formatter
if locator is None:
if self.boundaries is None:
if isinstance(self.norm, colors.Nonorm):
nv = len(self._values)
base = 1 + int(nv / 10)
locator = ticker.IndexLocator(base=base, offset=0)
elif isinstance(self.norm, colors.Boundarynorm):
b = self.norm.boundaries
locator = ticker.FixedLocator(b, nbins=10)
elif isinstance(self.norm, colors.Lognorm):
locator = ticker.LogLocator()
else:
locator = ticker.MaxNLocator()
else:
b = self._boundaries[self._inside]
locator = ticker.FixedLocator(b, nbins=10)
if isinstance(self.norm, colors.Nonorm):
intv = self._values[0], self._values[-1]
else:
intv = self.vmin, self.vmax
locator.create_dummy_axis(minpos=intv[0])
formatter.create_dummy_axis(minpos=intv[0])
locator.set_view_interval(*intv)
locator.set_data_interval(*intv)
formatter.set_view_interval(*intv)
formatter.set_data_interval(*intv)
b = np.array(locator())
ticks = self._locate(b)
inrange = (ticks > -0.001) & (ticks < 1.001)
ticks = ticks[inrange]
b = b[inrange]
formatter.set_locs(b)
ticklabels = [formatter(t, i) for i, t in enumerate(b)]
offset_string = formatter.get_offset()
return ticks, ticklabels, offset_string
def _ticker(self):
'''
Return the sequence of ticks (colorbar data locations),
ticklabels (strings),and the corresponding offset string.
'''
locator = self.locator
formatter = self.formatter
if locator is None:
if self.boundaries is None:
if isinstance(self.norm, offset_string
def plot_streamfunction_hovmollers(trans, name='simulated', basename='', obs=None):
""" Plot overturning stream function hovmoller diagrams"""
# Extract variables from data objects
dts = utils.get_ncdates(trans)
z = trans.variables['depth'][:]
sf_rapid = trans.variables['sf_rapid'][:]
sf_model = trans.variables['sf_model'][:]
# Set up figure
fig = plt.figure(figsize=(8,12))
cmap=plt.cm.viridis
levels = np.arange(15) * 2 - 4
norm = Boundarynorm(levels, ncolors=cmap.N, clip=True)
cmin,cmax=-5,30
# Add model data to axis
fig.add_subplot(3,1)
plt.pcolormesh(dts, -z, sf_model.transpose(),
vmin=cmin,vmax=cmax,cmap=cmap, norm=norm)
plt.colorbar(orientation='vertical')
plt.title('Overturning streamfunction at 26N in %s (model veLocities)' % name)
plt.xlabel('Dates')
plt.ylabel('Depth (m)')
# Add model data to axis (RAPID approx)
fig.add_subplot(3,2)
plt.pcolormesh(dts, sf_rapid.transpose(), norm=norm)
plt.colorbar(orientation='vertical')
plt.title('Overturning streamfunction at 26N in %s (RAPID approx)' % name)
plt.xlabel('Dates')
plt.ylabel('Depth (m)')
# Add optional observed data to axis
if obs is not None:
fig.add_subplot(3,3)
plt.pcolormesh(obs.dates, -obs.z, obs.sf.transpose(),
vmin=cmin, norm=norm)
plt.colorbar(orientation='vertical')
plt.title('Overturning streamfunction at 26N from RAPID array')
plt.xlabel('Dates')
plt.ylabel('Depth (m)')
# Save plot
plt.tight_layout()
savef = basename + 'overturning_streamfunction_at_26n_hovmoller.png'
print 'SAVING: %s' % savef
fig.savefig(savef, resolution=300)
plt.close()
def plot_streamfunction_hovmollers(trans, resolution=300)
plt.close()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。