matplotlib.pyplot.contour#
- matplotlib.pyplot.contour(*args, data=None, **kwargs)[source]#
绘制等高线。
调用签名
contour([X, Y,] Z, /, [levels], **kwargs)
参数 X、Y、Z 仅接受位置参数。
contour
和contourf
分别绘制等高线和填充等高线。除非另有说明,否则这两种函数的签名和返回值是相同的。- 参数:
- X, Y数组型,可选
Z 中各值的坐标。
X 和 Y 都必须是二维的,并与 Z 具有相同的形状(例如通过
numpy.meshgrid
创建),或者它们都必须是一维的,使得len(X) == N
是 Z 中的列数,且len(Y) == M
是 Z 中的行数。X 和 Y 都必须是单调有序的。
如果未给定,则它们被假定为整数索引,即
X = range(N)
,Y = range(M)
。- Z(M, N) 数组类型
绘制等高线的高度值。颜色映射由 cmap, norm, vmin 和 vmax 控制。
- levelsint 或 array-like, 可选
确定等高线/区域的数量和位置。
如果是一个整数 n,则使用
MaxNLocator
,它会尝试自动选择 Z 的最小值和最大值之间不超过 n+1 个“良好”的等高线级别。如果为 array-like,则在指定级别绘制等高线。值必须按升序排列。
- 返回:
- 其他参数:
- corner_mask布尔值,默认值:
rcParams["contour.corner_mask"]
(默认值:True
) 启用/禁用角遮罩,仅当 Z 是遮罩数组时才有效。如果为
False
,则任何接触到遮罩点的四边形都将被遮罩。如果为True
,则只有最接近这些点的四边形的三角形角总是被遮罩,由三个未遮罩点组成的其它三角形角照常绘制等高线。- colors颜色 或 颜色 列表,可选
级别的颜色,即
contour
的线条颜色和contourf
的区域颜色。颜色序列按升序级别循环使用。如果序列短于级别数量,则会重复。
作为快捷方式,可以使用单个颜色代替单元素列表,即使用
'red'
而不是['red']
来使所有级别具有相同的颜色。3.10 版本更改: 以前单个颜色必须表示为字符串,但现在可以传入任何有效的颜色格式。
默认情况下(值为 None),将使用 cmap 指定的颜色映射。
- alphafloat, 默认值: 1
alpha 混合值,介于 0(透明)和 1(不透明)之间。
- cmap字符串 或
Colormap
,默认值:rcParams["image.cmap"]
(默认值:'viridis'
) 用于将标量数据映射到颜色的颜色映射实例或已注册的颜色映射名称。
如果设置了 colors,则此参数将被忽略。
- norm字符串 或
Normalize
,可选 在采用 cmap 映射颜色之前,用于将标量数据缩放到 [0, 1] 范围的归一化方法。默认情况下,使用线性缩放,将最低值映射到 0,最高值映射到 1。
如果给定,可以是以下之一
一个比例尺名称,即“linear”、“log”、“symlog”、“logit”等之一。有关可用比例尺的列表,请调用
matplotlib.scale.get_scale_names()
。在这种情况下,将动态生成并实例化一个合适的Normalize
子类。
如果设置了 colors,则此参数将被忽略。
- vmin, vmax浮点型,可选
当使用标量数据且没有明确的 norm 时,vmin 和 vmax 定义了色图覆盖的数据范围。默认情况下,色图覆盖所提供数据的完整值范围。当给定 norm 实例时,使用 vmin/vmax 是错误的(但将
str
norm 名称与 vmin/vmax 一起使用是允许的)。如果未给出 vmin 或 vmax,则默认颜色缩放基于 levels。
如果设置了 colors,则此参数将被忽略。
- colorizer
Colorizer
或 None,默认值:None 用于将颜色映射到数据的 Colorizer 对象。如果为 None,则从 norm 和 cmap 创建一个 Colorizer 对象。
如果设置了 colors,则此参数将被忽略。
- origin{None, 'upper', 'lower', 'image'}, 默认值: None
通过指定
Z[0, 0]
的位置来确定 Z 的方向和确切位置。这仅在未给定 X、Y 时才相关。None:
Z[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] 的位置是像素中心,而不是角落。如果 origin 是 None,则 (x0, y0) 是 Z[0, 0] 的位置,(x1, y1) 是 Z[-1, -1] 的位置。如果在调用 contour 时指定了 X 和 Y,则此参数将被忽略。
- locatorticker.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
的色图属性发生变化,它不会收到通知。因此,修改色图后需要明确调用changed()
。如果将颜色条分配给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
的实例来覆盖坐标轴单位。- antialiasedbool, 可选
启用抗锯齿,覆盖默认值。对于填充等高线,默认值为 False。对于线等高线,它取自
rcParams["lines.antialiased"]
(默认值:True
)。- nchunkint >= 0, 可选
如果为 0,则不细分域。指定一个正整数,将域划分为 nchunk x nchunk 四边形的子域。分块减少了等高线算法生成的最大多边形长度,从而减少了传递给后端渲染的工作负载,并且还稍微减少了 RAM 需求。但是,根据后端、antialiased 标志和 alpha 值,它可能会在分块边界引入渲染伪影。
- linewidths浮点数 或 数组型,默认值:
rcParams["contour.linewidth"]
(默认值:None
) 仅适用于
contour
。等高线的线宽。
如果是一个数字,所有级别都将以此线宽绘制。
如果是一个序列,则按升序排列的级别将按指定顺序的线宽绘制。
如果为 None,则此值将回退到
rcParams["lines.linewidth"]
(默认值:1.5
)。- linestyles{None, 'solid', 'dashed', 'dashdot', 'dotted'}, 可选
仅适用于
contour
。如果 linestyles 为 None,则默认值为 'solid',除非线条是单色的。在这种情况下,负等高线将从 negative_linestyles 参数中获取其线型。
linestyles 也可以是上述字符串的可迭代对象,指定一组要使用的线型。如果此可迭代对象短于等高线级别数,则会根据需要重复。
- negative_linestyles{None, 'solid', 'dashed', 'dashdot', 'dotted'}, 可选
仅适用于
contour
。如果 linestyles 为 None 且线条是单色的,此参数指定负等高线的线型。
如果 negative_linestyles 为 None,则默认值取自
rcParams["contour.negative_linestyle"]
(默认值:'dashed'
)。negative_linestyles 也可以是上述字符串的可迭代对象,指定一组要使用的线型。如果此可迭代对象短于等高线级别数,则会根据需要重复。
- hatcheslist[str], 可选
仅适用于
contourf
。要在填充区域上使用的交叉影线图案列表。如果为 None,则不会向等高线添加影线。
- algorithm{'mpl2005', 'mpl2014', 'serial', 'threaded'}, 可选
用于计算等高线和多边形的等高线算法。这些算法在 ContourPy 中实现,有关更多信息请查阅 ContourPy 文档。
默认值取自
rcParams["contour.algorithm"]
(默认值:'mpl2014'
)。- clip_path
Patch
或Path
或TransformedPath
设置裁剪路径。参见
set_clip_path
。在版本 3.8 中添加。
- data可索引对象,可选
如果给定,所有参数也接受一个字符串
s
,如果s
是data
中的一个键,则将其解释为data[s]
。
- corner_mask布尔值,默认值:
备注
注意
这是 pyplot 封装器,用于
axes.Axes.contour
。contourf
与 MATLAB 版本不同之处在于它不绘制多边形边缘。要绘制边缘,请通过调用contour
添加线等高线。contourf
填充在顶部封闭的区间;也就是说,对于边界 z1 和 z2,填充区域是z1 < Z <= z2
除了最低的区间,它在两端都是闭合的(即包括最低值)。
contour
和contourf
使用行进方块(marching squares)算法计算等高线位置。更多信息可在 ContourPy 文档 中找到。