当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python matplotlib contour用法及代码示例


本文简要介绍 python 语言中 matplotlib.pyplot.contour 的用法。

用法

matplotlib.pyplot.contour(*args, data=None, **kwargs)

绘制等高线。

调用签名:

contour([X, Y,] Z, [levels], **kwargs)

contour contourf 分别绘制轮廓线和填充轮廓。除非另有说明,两个版本的函数签名和返回值是相同的。

参数
X, Y 类似数组,可选

Z 中值的坐标。

XY 必须都是 2D 且具有与 Z 相同的形状(例如,通过 numpy.meshgrid 创建),或者它们必须都是 1-D 使得 len(X) == NZ 中的列数和 len(Y) == MZ 中的行数。

XY 都必须单调排序。

如果没有给出,它们被假定为整数索引,即 X = range(N)Y = range(M)

Z (M,N) 类数组

绘制轮廓的高度值。 Color-mapping 由 cmapnormvminvmax 控制。

levels int 或类似数组,可选

确定等高线/区域的数量和位置。

如果 int n ,请使用 MaxNLocator ,它会尝试在 Z 的最小和最大数值之间自动选择不超过 n+1 "nice" 等高线级别。

如果是类似数组,则在指定级别绘制等高线。这些值必须按升序排列。

返回
QuadContourSet
其他参数
corner_mask 布尔值,默认值:rcParams["contour.corner_mask"](默认值:True)

启用/禁用角掩蔽,仅当 Z 是掩蔽数组时才有效。如果 False ,则任何接触遮罩点的四边形都会被遮罩。如果 True ,只有最接近这些点的四边形的三角形角总是被屏蔽掉,其他包含三个未屏蔽点的三角形角像往常一样被轮廓化。

colors 颜色字符串或颜色序列,可选

级别的颜色,即 contour 的线条和 contourf 的区域。

该序列按升序循环用于各个级别。如果序列比级别数短,则重复。

作为一种快捷方式,可以使用单一颜色字符串代替单元素列表,即 'red' 而不是 ['red'] 以使用相同颜色为所有级别着色。此快捷方式仅适用于颜色字符串,不适用于其他指定颜色的方式。

默认情况下(值 None ),将使用由 cmap 指定的颜色图。

alpha 浮点数,默认值:1

Alpha 混合值,介于 0(透明)和 1(不透明)之间。

cmap str 或 Colormap ,默认值:rcParams["image.cmap"](默认值:'viridis')

用于将标量数据映射到颜色的颜色图实例或注册的颜色图名称。

如果设置了colors,则忽略此参数。

norm str 或 Normalize ,可选

在使用 cmap 映射到颜色之前,用于将标量数据缩放到 [0, 1] 范围的归一化方法。默认情况下,使用线性缩放,将最低值映射到 0,将最高值映射到 1。

如果给出,这可以是以下之一:

  • Normalize 或其子类之一的实例(请参阅颜色图归一化)。

  • 比例名称,即 "linear"、"log"、"symlog"、"logit" 等之一。有关可用比例的列表,请调用 matplotlib.scale.get_scale_names() 。在这种情况下,会动态生成并实例化合适的 Normalize 子类。

如果设置了colors,则忽略此参数。

vmin, vmax 浮点数,可选

当使用标量数据并且没有显式 norm 时,vminvmax 定义颜色图覆盖的数据范围。默认情况下,颜色图覆盖所提供数据的完整值范围。当给出 norm 实例时,使用 vmin /vmax 是错误的(但使用 str norm 名称和 vmin /vmax 是可以接受的)。

如果未给出 vminvmax ,则默认颜色缩放基于 levels

如果设置了colors,则忽略此参数。

origin { None , 'upper', 'lower', 'image'},默认值:无

通过指定 Z[0, 0] 的位置来确定 Z 的方向和准确位置。这仅在没有给出 XY 的情况下才有意义。

  • NoneZ[0, 0] 位于左下角的 X=0、Y=0 处。

  • 'lower':Z[0, 0] 在左下角的 X=0.5,Y=0.5 处。

  • 'upper':Z[0, 0] 在左上角的 X=N+0.5,Y=0.5 处。

  • 'image':使用来自 rcParams["image.origin"] 的值(默认值:'upper')。

extent (x0, x1, y0, y1),可选

如果 origin 不是 None ,则 extent 被解释为 imshow :它给出了外部像素边界。在这种情况下,Z[0, 0] 的位置是像素的中心,而不是角落。如果 originNone ,那么 ( x0 , y0 ) 是 Z[0, 0] 的位置,并且 ( x1 , y1 ) 是 Z[-1, - 1]。

如果在对轮廓的调用中指定了 XY,则忽略此参数。

locator ticker.Locator 子类,可选

如果未通过 levels 明确给出,则定位器用于确定轮廓级别。默认为 MaxNLocator

extend {'neither', 'both', 'min', 'max'},默认:'neither'

确定 levels 范围之外的值的 contourf 着色。

如果是'neither',则levels 范围之外的值不着色。如果是'min', 'max' 或'both',为levels 范围的下方、上方或下方和上方的值着色。

低于 min(levels) 和高于 max(levels) 的值映射到 Colormap 的低于/高于值。请注意,默认情况下,大多数颜色图没有专门的颜色,因此上值和下值是颜色图的边值。您可能希望使用 Colormap.set_under Colormap.set_over 显式设置这些值。

注意

如果现有 QuadContourSet 的颜色图属性发生更改,则不会收到通知。因此,修改颜色图后需要显式调用QuadContourSet.changed()。如果将颜色条分配给 QuadContourSet ,则可以省略显式调用,因为它在内部调用 QuadContourSet.changed()

例子:

x = np.arange(1, 10)
y = x.reshape(-1, 1)
h = x * y

cs = plt.contourf(h, levels=[10, 30, 50],
    colors=['#808080', '#A0A0A0', '#C0C0C0'], extend='both')
cs.cmap.set_over('red')
cs.cmap.set_under('blue')
cs.changed()
xunits, yunits 注册单位,可选

通过指定 matplotlib.units.ConversionInterface 的实例来覆盖轴单位。

antialiased 布尔型,可选

启用抗锯齿,覆盖默认值。对于填充轮廓,默认值为 False 。对于线条轮廓,它取自 rcParams["lines.antialiased"](默认值:True)。

nchunk int >= 0,可选

如果为 0,则不细分域。指定一个正整数以将域划分为 nchunk 通过 nchunk 四边形的子域。分块减少了轮廓算法生成的多边形的最大长度,从而减少了传递到后端的渲染工作量,并且需要的 RAM 也略少。但是,它可以根据后端、antialiased 标志和 alpha 的值在块边界引入渲染工件。

linewidths 浮点数或类似数组,默认值:rcParams["contour.linewidth"](默认值:None)

Only applies to contour

等高线的线宽。

如果是数字,则所有级别都将使用此线宽绘制。

如果是一个序列,将按照指定的顺序绘制升序级别的线宽。

如果没有,这将回退到 rcParams["lines.linewidth"](默认值:1.5)。

linestyles { None , 'solid', 'dashed', 'dashdot', 'dotted'},可选

Only applies to contour

如果 linestylesNone ,则默认值为 'solid' ,除非线条是单色的。在这种情况下,负轮廓将从 negative_linestyles 参数中获取线条样式。

linestyles 也可以是上述字符串的可迭代对象,指定要使用的一组线型。如果这个迭代比轮廓级别的数量短,它将根据需要重复。

negative_linestyles { None , 'solid', 'dashed', 'dashdot', 'dotted'},可选

Only applies to contour

如果linestylesNone 并且线条是单色的,则此参数指定负轮廓的线条样式。

如果 negative_linestylesNone ,则默认值取自 rcParams["contour.negative_linestyles"]

negative_linestyles 也可以是上述字符串的可迭代对象,指定要使用的一组线型。如果这个迭代比轮廓级别的数量短,它将根据需要重复。

hatches 列表[str],可选

Only applies to contourf

用于填充区域的交叉影线图案列表。如果没有,则不会向轮廓添加阴影。阴影仅在 PostScript、PDF、SVG 和 Agg 后端中受支持。

algorithm {'mpl2005'、'mpl2014'、'serial', 'threaded'},可选

使用哪种轮廓算法来计算轮廓线和多边形。这些算法在ContourPy中实现,请参阅ContourPy documentation以获取更多信息。

默认值取自 rcParams["contour.algorithm"] (默认值:'mpl2014' )。

clip_path Patch Path TransformedPath

设置剪辑路径。请参阅 set_clip_path

3.8 版中的新函数。

data 可索引对象,可选

如果给定,所有参数也接受一个字符串 s ,它被解释为 data[s] (除非这引发异常)。

注意

  1. contourf 与 MATLAB 版本的不同之处在于它不绘制多边形边。要绘制边,请通过调用 contour 添加线条轮廓。

  2. contourf 填充顶部闭合的区间;也就是说,对于边界 z1z2 ,填充区域为:

    z1 < Z <= z2

    除了最低间隔,它在两边都是封闭的(即它包括最低值)。

  3. contour contourf 使用 marching squares 算法来计算轮廓位置。更多信息可以在ContourPy documentation中找到。

相关用法


注:本文由纯净天空筛选整理自skytowner.com大神的英文原创作品 matplotlib.pyplot.contour。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。