本文整理汇总了Python中matplotlib.tri.triangulation.Triangulation.get_from_args_and_kwargs方法的典型用法代码示例。如果您正苦于以下问题:Python Triangulation.get_from_args_and_kwargs方法的具体用法?Python Triangulation.get_from_args_and_kwargs怎么用?Python Triangulation.get_from_args_and_kwargs使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类matplotlib.tri.triangulation.Triangulation
的用法示例。
在下文中一共展示了Triangulation.get_from_args_and_kwargs方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: plot_trisurf
# 需要导入模块: from matplotlib.tri.triangulation import Triangulation [as 别名]
# 或者: from matplotlib.tri.triangulation.Triangulation import get_from_args_and_kwargs [as 别名]
def plot_trisurf(self, *args, **kwargs):
'''
plot_trisurf(x, y, z, **wrargs)
plot_trisurf(x, y, z, triangles = triangle,,,)
plot_trisurf(tri, z, **kwargs, cz = cz, cdata = cdata)
'''
from art3d_gl import poly_collection_3d_to_gl
from matplotlib.tri.triangulation import Triangulation
cz = kwargs.pop('cz', False)
cdata = kwargs.pop('cdata', None)
expanddata = kwargs.pop('expanddata', False)
tri, args, kwargs = Triangulation.get_from_args_and_kwargs(*args, **kwargs)
if 'Z' in kwargs:
z = np.asarray(kwargs.pop('Z'))
else:
z = np.asarray(args[0])
# We do this so Z doesn't get passed as an arg to PolyCollection
args = args[1:]
triangles = tri.get_masked_triangles()
X3D = tri.x
Y3D = tri.y
Z3D = z
idxset = tri.get_masked_triangles()
if expanddata:
verts = np.dstack((X3D[idxset],
Y3D[idxset],
Z3D[idxset]))
if cz:
if cdata is not None:
cdata = cdata[idxset]
else:
cdata = Z3D[idxset]
shade = kwargs.pop('shade', 'linear')
if shade != 'linear':
cdata = np.mean(cdata, -1)
kwargs['facecolordata'] = np.real(cdata)
kwargs.pop('facecolor', None) # get rid of this keyword
kwargs['cz'] = cz
o = self.plot_solid(verts, **kwargs)
o._idxset = (None, None, idxset) # this is used for phasor
else:
verts = np.vstack((X3D, Y3D, Z3D)).transpose()
if cz:
if cdata is not None:
cdata = cdata
else:
cdata = Z3D
kwargs['facecolordata'] = np.real(cdata)
kwargs.pop('facecolor', None) # get rid of this keyword
kwargs['cz'] = cz
o = self.plot_solid(verts, idxset, **kwargs)
o._idxset = (None, None, None) # this is used for phasor
return o
示例2: _contour_args
# 需要导入模块: from matplotlib.tri.triangulation import Triangulation [as 别名]
# 或者: from matplotlib.tri.triangulation.Triangulation import get_from_args_and_kwargs [as 别名]
def _contour_args(self, args, kwargs):
if self.filled: fn = 'contourf'
else: fn = 'contour'
tri, args, kwargs = \
Triangulation.get_from_args_and_kwargs(*args, **kwargs)
z = np.asarray(args[0])
if z.shape != tri.x.shape:
raise ValueError('z array must have same length as triangulation x'
'and y arrays')
self.zmax = z.max()
self.zmin = z.min()
if self.logscale and self.zmin <= 0:
raise ValueError('Cannot %s log of negative values.' % fn)
self._contour_level_args(z, args[1:])
return (tri, z)
示例3: meshDelaunay
# 需要导入模块: from matplotlib.tri.triangulation import Triangulation [as 别名]
# 或者: from matplotlib.tri.triangulation.Triangulation import get_from_args_and_kwargs [as 别名]
def meshDelaunay(settings,heights):
'''
Convert coordinates to mesh using Delaunay triangulation. Also returns
colormap for writing the mesh in IDTF format, surface triangles from
triangulation (as opposed to tetrahedra), and the top surface area of
the mesh.
'''
# Get coordinates of all height points (omitting zeros)
coordinates = np.where(heights != 0)
x_3D = coordinates[0]
y_3D = coordinates[1]
# Generate 3D mesh from heights using meshgrid and griddata
dx = (max(x_3D) - min(x_3D)) / settings['grid_size']
dy = (max(y_3D) - min(y_3D)) / settings['grid_size']
x_grid = np.linspace(min(x_3D),max(x_3D),max(dx,dy))
y_grid = np.linspace(min(y_3D),max(y_3D),max(dx,dy))
X,Y = np.meshgrid(x_grid,y_grid)
z = np.array([heights[x_3D[i],y_3D[i]] for i in range(len(coordinates[0]))])
Z = griddata((x_3D,y_3D),z,(X,Y))
# Convert NaNs to zeros and find non-zero coordinates
Z[np.isnan(Z)] = 0
nonZero = np.where(Z > 0) # Indices of non-zero points
# Subset X,Y, and Z to contain only non-zero points
Z_nz = Z[nonZero[0],nonZero[1]]
X_nz= np.array([X[0][xi] for xi in nonZero[0]])
Y_nz = np.array([Y[:,0][yi] for yi in nonZero[1]])
xyz_points = np.column_stack((X_nz,Y_nz,Z_nz))
triangulation = Delaunay(xyz_points)
# Get surface triangles
triang,args,kwargs = Triangulation.get_from_args_and_kwargs(X_nz,Y_nz,Z_nz,triangles=triangulation.simplices)
triangles = triang.get_masked_triangles() # From matplotlib.tri.triangulation
# Get color values for mesh triangle faces
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
surf = ax.plot_trisurf(X_nz,Y_nz,Z_nz,triangles=triangles,cmap=plt.cm.viridis)
m = plt.cm.ScalarMappable(cmap=surf.cmap,norm=surf.norm)
colors = m.to_rgba(Z_nz)
return z,triangulation,triangles,colors
示例4: tripcolor
# 需要导入模块: from matplotlib.tri.triangulation import Triangulation [as 别名]
# 或者: from matplotlib.tri.triangulation.Triangulation import get_from_args_and_kwargs [as 别名]
def tripcolor(ax, *args, **kwargs):
"""
Create a pseudocolor plot of an unstructured triangular grid.
The triangulation can be specified in one of two ways; either::
tripcolor(triangulation, ...)
where triangulation is a :class:`matplotlib.tri.Triangulation`
object, or
::
tripcolor(x, y, ...)
tripcolor(x, y, triangles, ...)
tripcolor(x, y, triangles=triangles, ...)
tripcolor(x, y, mask=mask, ...)
tripcolor(x, y, triangles, mask=mask, ...)
in which case a Triangulation object will be created. See
:class:`~matplotlib.tri.Triangulation` for a explanation of these
possibilities.
The next argument must be *C*, the array of color values, either
one per point in the triangulation if color values are defined at
points, or one per triangle in the triangulation if color values
are defined at triangles. If there are the same number of points
and triangles in the triangulation it is assumed that color
values are defined at points; to force the use of color values at
triangles use the kwarg *facecolors*=C instead of just *C*.
*shading* may be 'flat' (the default) or 'gouraud'. If *shading*
is 'flat' and C values are defined at points, the color values
used for each triangle are from the mean C of the triangle's
three points. If *shading* is 'gouraud' then color values must be
defined at points.
The remaining kwargs are the same as for
:meth:`~matplotlib.axes.Axes.pcolor`.
**Example:**
.. plot:: mpl_examples/pylab_examples/tripcolor_demo.py
"""
if not ax._hold:
ax.cla()
alpha = kwargs.pop('alpha', 1.0)
norm = kwargs.pop('norm', None)
cmap = kwargs.pop('cmap', None)
vmin = kwargs.pop('vmin', None)
vmax = kwargs.pop('vmax', None)
shading = kwargs.pop('shading', 'flat')
facecolors = kwargs.pop('facecolors', None)
if shading not in ['flat', 'gouraud']:
raise ValueError("shading must be one of ['flat', 'gouraud'] "
"not {0}".format(shading))
tri, args, kwargs = Triangulation.get_from_args_and_kwargs(*args, **kwargs)
# C is the colors array defined at either points or faces (i.e. triangles).
# If facecolors is None, C are defined at points.
# If facecolors is not None, C are defined at faces.
if facecolors is not None:
C = facecolors
else:
C = np.asarray(args[0])
# If there are a different number of points and triangles in the
# triangulation, can omit facecolors kwarg as it is obvious from
# length of C whether it refers to points or faces.
# Do not do this for gouraud shading.
if (facecolors is None and len(C) == len(tri.triangles) and
len(C) != len(tri.x) and shading != 'gouraud'):
facecolors = C
# Check length of C is OK.
if ((facecolors is None and len(C) != len(tri.x)) or
(facecolors is not None and len(C) != len(tri.triangles))):
raise ValueError('Length of color values array must be the same '
'as either the number of triangulation points '
'or triangles')
# Handling of linewidths, shading, edgecolors and antialiased as
# in Axes.pcolor
linewidths = (0.25,)
if 'linewidth' in kwargs:
kwargs['linewidths'] = kwargs.pop('linewidth')
kwargs.setdefault('linewidths', linewidths)
edgecolors = 'none'
if 'edgecolor' in kwargs:
kwargs['edgecolors'] = kwargs.pop('edgecolor')
ec = kwargs.setdefault('edgecolors', edgecolors)
if 'antialiased' in kwargs:
kwargs['antialiaseds'] = kwargs.pop('antialiased')
if 'antialiaseds' not in kwargs and ec.lower() == "none":
kwargs['antialiaseds'] = False
#.........这里部分代码省略.........
示例5: triplot
# 需要导入模块: from matplotlib.tri.triangulation import Triangulation [as 别名]
# 或者: from matplotlib.tri.triangulation.Triangulation import get_from_args_and_kwargs [as 别名]
def triplot(ax, *args, **kwargs):
"""
Draw a unstructured triangular grid as lines and/or markers to
the :class:`~matplotlib.axes.Axes`.
The triangulation to plot can be specified in one of two ways;
either::
triplot(triangulation, ...)
where triangulation is a :class:`~matplotlib.tri.Triangulation`
object, or
::
triplot(x, y, ...)
triplot(x, y, triangles, ...)
triplot(x, y, triangles=triangles, ...)
triplot(x, y, mask=mask, ...)
triplot(x, y, triangles, mask=mask, ...)
in which case a Triangulation object will be created. See
:class:`~matplotlib.tri.Triangulation` for a explanation of these
possibilities.
The remaining args and kwargs are the same as for
:meth:`~matplotlib.axes.Axes.plot`.
**Example:**
.. plot:: mpl_examples/pylab_examples/triplot_demo.py
"""
import matplotlib.axes
tri, args, kwargs = Triangulation.get_from_args_and_kwargs(*args, **kwargs)
x = tri.x
y = tri.y
edges = tri.edges
# If draw both lines and markers at the same time, e.g.
# ax.plot(x[edges].T, y[edges].T, *args, **kwargs)
# then the markers are drawn more than once which is incorrect if alpha<1.
# Hence draw lines and markers separately.
# Decode plot format string, e.g. 'ro-'
fmt = ''
if len(args) > 0:
fmt = args[0]
# _process_plot_format moves around so I made copy here.
# not a best solution...;D
# linestyle, marker, color = matplotlib.axes._process_plot_format(fmt)
linestyle, marker, color = _process_plot_format(fmt)
# Draw lines without markers, if lines are required.
a = []
if linestyle is not None and linestyle is not 'None':
kw = kwargs.copy()
kw.pop('marker', None) # Ignore marker if set.
kw['linestyle'] = ls_mapper[linestyle]
kw['edgecolor'] = color
kw['facecolor'] = None
vertices = np.column_stack((x[edges].flatten(), y[edges].flatten()))
codes = ([Path.MOVETO] + [Path.LINETO])*len(edges)
path = Path(vertices, codes)
pathpatch = PathPatch(path, **kw)
ax.add_patch(pathpatch)
a.append(pathpatch)
# Draw markers without lines.
# Should avoid drawing markers for points that are not in any triangle?
kwargs['linestyle'] = ''
# without hiding points explicitly, marker would expose hidden points.
idx = np.unique(edges.flatten())
l = ax.plot(x[idx], y[idx], *args, **kwargs)
a = l+a
return a
示例6: tripcolor
# 需要导入模块: from matplotlib.tri.triangulation import Triangulation [as 别名]
# 或者: from matplotlib.tri.triangulation.Triangulation import get_from_args_and_kwargs [as 别名]
def tripcolor(ax, *args, **kwargs):
"""
Create a pseudocolor plot of an unstructured triangular grid to
the :class:`~matplotlib.axes.Axes`.
The triangulation can be specified in one of two ways; either::
tripcolor(triangulation, ...)
where triangulation is a :class:`~matplotlib.tri.Triangulation`
object, or
::
tripcolor(x, y, ...)
tripcolor(x, y, triangles, ...)
tripcolor(x, y, triangles=triangles, ...)
tripcolor(x, y, mask=mask, ...)
tripcolor(x, y, triangles, mask=mask, ...)
in which case a Triangulation object will be created. See
:class:`~matplotlib.tri.Triangulation` for a explanation of these
possibilities.
The next argument must be *C*, the array of color values, one per
point in the triangulation.
*shading* may be 'flat', 'faceted' or 'gouraud'. If *shading* is
'flat' or 'faceted', the colors used for each triangle are from
the mean C of the triangle's three points.
The remaining kwargs are the same as for
:meth:`~matplotlib.axes.Axes.pcolor`.
**Example:**
.. plot:: mpl_examples/pylab_examples/tripcolor_demo.py
"""
if not ax._hold: ax.cla()
alpha = kwargs.pop('alpha', 1.0)
norm = kwargs.pop('norm', None)
cmap = kwargs.pop('cmap', None)
vmin = kwargs.pop('vmin', None)
vmax = kwargs.pop('vmax', None)
shading = kwargs.pop('shading', 'flat')
tri, args, kwargs = Triangulation.get_from_args_and_kwargs(*args, **kwargs)
x = tri.x
y = tri.y
triangles = tri.get_masked_triangles()
C = np.asarray(args[0])
if C.shape != x.shape:
raise ValueError('C array must have same length as triangulation x and'
' y arrays')
if shading == 'gouraud':
collection = TriMesh(tri, **kwargs)
else:
if shading == 'faceted':
edgecolors = (0,0,0,1),
linewidths = (0.25,)
else:
edgecolors = 'face'
linewidths = (1.0,)
kwargs.setdefault('edgecolors', edgecolors)
kwargs.setdefault('antialiaseds', (0,))
kwargs.setdefault('linewidths', linewidths)
# Vertices of triangles.
verts = np.concatenate((x[triangles][...,np.newaxis],
y[triangles][...,np.newaxis]), axis=2)
# Color values, one per triangle, mean of the 3 vertex color values.
C = C[triangles].mean(axis=1)
collection = PolyCollection(verts, **kwargs)
collection.set_alpha(alpha)
collection.set_array(C)
if norm is not None: assert(isinstance(norm, Normalize))
collection.set_cmap(cmap)
collection.set_norm(norm)
if vmin is not None or vmax is not None:
collection.set_clim(vmin, vmax)
else:
collection.autoscale_None()
ax.grid(False)
minx = tri.x.min()
maxx = tri.x.max()
miny = tri.y.min()
maxy = tri.y.max()
corners = (minx, miny), (maxx, maxy)
ax.update_datalim( corners)
ax.autoscale_view()
ax.add_collection(collection)
return collection
示例7: triplot
# 需要导入模块: from matplotlib.tri.triangulation import Triangulation [as 别名]
# 或者: from matplotlib.tri.triangulation.Triangulation import get_from_args_and_kwargs [as 别名]
def triplot(ax, *args, **kwargs):
"""
Draw a unstructured triangular grid as lines and/or markers.
The triangulation to plot can be specified in one of two ways;
either::
triplot(triangulation, ...)
where triangulation is a :class:`matplotlib.tri.Triangulation`
object, or
::
triplot(x, y, ...)
triplot(x, y, triangles, ...)
triplot(x, y, triangles=triangles, ...)
triplot(x, y, mask=mask, ...)
triplot(x, y, triangles, mask=mask, ...)
in which case a Triangulation object will be created. See
:class:`~matplotlib.tri.Triangulation` for a explanation of these
possibilities.
The remaining args and kwargs are the same as for
:meth:`~matplotlib.axes.Axes.plot`.
Return a list of 2 :class:`~matplotlib.lines.Line2D` containing
respectively:
- the lines plotted for triangles edges
- the markers plotted for triangles nodes
"""
import matplotlib.axes
tri, args, kwargs = Triangulation.get_from_args_and_kwargs(*args, **kwargs)
x, y, edges = (tri.x, tri.y, tri.edges)
# Decode plot format string, e.g., 'ro-'
fmt = ""
if len(args) > 0:
fmt = args[0]
linestyle, marker, color = matplotlib.axes._base._process_plot_format(fmt)
# Insert plot format string into a copy of kwargs (kwargs values prevail).
kw = kwargs.copy()
for key, val in zip(('linestyle', 'marker', 'color'),
(linestyle, marker, color)):
if val is not None:
kw[key] = kwargs.get(key, val)
# Draw lines without markers.
# Note 1: If we drew markers here, most markers would be drawn more than
# once as they belong to several edges.
# Note 2: We insert nan values in the flattened edges arrays rather than
# plotting directly (triang.x[edges].T, triang.y[edges].T)
# as it considerably speeds-up code execution.
linestyle = kw['linestyle']
kw_lines = kw.copy()
kw_lines['marker'] = 'None' # No marker to draw.
kw_lines['zorder'] = kw.get('zorder', 1) # Path default zorder is used.
if (linestyle is not None) and (linestyle not in ['None', '', ' ']):
tri_lines_x = np.insert(x[edges], 2, np.nan, axis=1)
tri_lines_y = np.insert(y[edges], 2, np.nan, axis=1)
tri_lines = ax.plot(tri_lines_x.ravel(), tri_lines_y.ravel(),
**kw_lines)
else:
tri_lines = ax.plot([], [], **kw_lines)
# Draw markers separately.
marker = kw['marker']
kw_markers = kw.copy()
kw_markers['linestyle'] = 'None' # No line to draw.
if (marker is not None) and (marker not in ['None', '', ' ']):
tri_markers = ax.plot(x, y, **kw_markers)
else:
tri_markers = ax.plot([], [], **kw_markers)
return tri_lines + tri_markers
示例8: triplot
# 需要导入模块: from matplotlib.tri.triangulation import Triangulation [as 别名]
# 或者: from matplotlib.tri.triangulation.Triangulation import get_from_args_and_kwargs [as 别名]
def triplot(ax, *args, **kwargs):
"""
Draw a unstructured triangular grid as lines and/or markers.
The triangulation to plot can be specified in one of two ways;
either::
triplot(triangulation, ...)
where triangulation is a :class:`matplotlib.tri.Triangulation`
object, or
::
triplot(x, y, ...)
triplot(x, y, triangles, ...)
triplot(x, y, triangles=triangles, ...)
triplot(x, y, mask=mask, ...)
triplot(x, y, triangles, mask=mask, ...)
in which case a Triangulation object will be created. See
:class:`~matplotlib.tri.Triangulation` for a explanation of these
possibilities.
The remaining args and kwargs are the same as for
:meth:`~matplotlib.axes.Axes.plot`.
**Example:**
.. plot:: mpl_examples/pylab_examples/triplot_demo.py
"""
import matplotlib.axes
tri, args, kwargs = Triangulation.get_from_args_and_kwargs(*args, **kwargs)
x = tri.x
y = tri.y
edges = tri.edges
# If draw both lines and markers at the same time, e.g.
# ax.plot(x[edges].T, y[edges].T, *args, **kwargs)
# then the markers are drawn more than once which is incorrect if alpha<1.
# Hence draw lines and markers separately.
# Decode plot format string, e.g., 'ro-'
fmt = ""
if len(args) > 0:
fmt = args[0]
linestyle, marker, color = matplotlib.axes._process_plot_format(fmt)
# Draw lines without markers, if lines are required.
if linestyle is not None and linestyle is not "None":
kw = kwargs.copy()
kw.pop("marker", None) # Ignore marker if set.
kw["linestyle"] = ls_mapper[linestyle]
kw["edgecolor"] = color
kw["facecolor"] = None
vertices = np.column_stack((x[edges].flatten(), y[edges].flatten()))
codes = ([Path.MOVETO] + [Path.LINETO]) * len(edges)
path = Path(vertices, codes)
pathpatch = PathPatch(path, **kw)
ax.add_patch(pathpatch)
# Draw markers without lines.
# Should avoid drawing markers for points that are not in any triangle?
kwargs["linestyle"] = ""
ax.plot(x, y, *args, **kwargs)