Matplotlib绘图设置---颜色条设置

设置颜色条

对于图形中由彩色的点、线、面构成的连续标签,用颜色条来表示的效果比较好,在Matplotlib中,颜色条是一个独立的坐标轴。

可视图形的颜色选择可参考matplotlib配色方案。

Choosing Colormaps — Matplotlib 1.4.1 documentation

重点关注的配色方案

  • 顺序配色方案:由一组连续的颜色构成的配色方案(例如binary 或 viridis)。
  • 互逆配色方案:通常有两种互补的颜色构成,表示正反两种含义(例如RdBu 或 PuOr)
  • 定性配色方案:随机顺序的一组颜色(例如rainbow 或 jet)
plt.imshow(
    X,
    cmap=None,
    norm=None,
    aspect=None,
    interpolation=None,
    alpha=None,
    vmin=None,
    vmax=None,
    origin=None,
    extent=None,
    shape=<deprecated parameter>,
    filternorm=1,
    filterrad=4.0,
    imlim=<deprecated parameter>,
    resample=None,
    url=None,
    *,
    data=None,
    **kwargs,
)
Docstring:
Display an image, i.e. data on a 2D regular raster.

Parameters
----------
X : array-like or PIL image
    The image data. Supported array shapes are:

    - (M, N): an image with scalar data. The data is visualized
      using a colormap.
    - (M, N, 3): an image with RGB values (0-1 float or 0-255 int).
    - (M, N, 4): an image with RGBA values (0-1 float or 0-255 int),
      i.e. including transparency.

    The first two dimensions (M, N) define the rows and columns of
    the image.

    Out-of-range RGB(A) values are clipped.

cmap : str or `~matplotlib.colors.Colormap`, optional
    The Colormap instance or registered colormap name used to map
    scalar data to colors. This parameter is ignored for RGB(A) data.
    Defaults to :rc:`image.cmap`.

norm : `~matplotlib.colors.Normalize`, optional
    The `Normalize` instance used to scale scalar data to the [0, 1]
    range before mapping to colors using *cmap*. By default, a linear
    scaling mapping the lowest value to 0 and the highest to 1 is used.
    This parameter is ignored for RGB(A) data.

aspect : {'equal', 'auto'} or float, optional
    Controls the aspect ratio of the axes. The aspect is of particular
    relevance for images since it may distort the image, i.e. pixel
    will not be square.

    This parameter is a shortcut for explicitly calling
    `.Axes.set_aspect`. See there for further details.

    - 'equal': Ensures an aspect ratio of 1. Pixels will be square
      (unless pixel sizes are explicitly made non-square in data
      coordinates using *extent*).
    - 'auto': The axes is kept fixed and the aspect is adjusted so
      that the data fit in the axes. In general, this will result in
      non-square pixels.

    If not given, use :rc:`image.aspect` (default: 'equal').

interpolation : str, optional
    The interpolation method used. If *None*
    :rc:`image.interpolation` is used, which defaults to 'nearest'.

    Supported values are 'none', 'nearest', 'bilinear', 'bicubic',
    'spline16', 'spline36', 'hanning', 'hamming', 'hermite', 'kaiser',
    'quadric', 'catrom', 'gaussian', 'bessel', 'mitchell', 'sinc',
    'lanczos'.

    If *interpolation* is 'none', then no interpolation is performed
    on the Agg, ps, pdf and svg backends. Other backends will fall back
    to 'nearest'. Note that most SVG renders perform interpolation at
    rendering and that the default interpolation method they implement
    may differ.

    See
    :doc:`/gallery/images_contours_and_fields/interpolation_methods`
    for an overview of the supported interpolation methods.

    Some interpolation methods require an additional radius parameter,
    which can be set by *filterrad*. Additionally, the antigrain image
    resize filter is controlled by the parameter *filternorm*.

alpha : scalar, optional
    The alpha blending value, between 0 (transparent) and 1 (opaque).
    This parameter is ignored for RGBA input data.

vmin, vmax : scalar, optional
    When using scalar data and no explicit *norm*, *vmin* and *vmax*
    define the data range that the colormap covers. By default,
    the colormap covers the complete value range of the supplied
    data. *vmin*, *vmax* are ignored if the *norm* parameter is used.

origin : {'upper', 'lower'}, optional
    Place the [0,0] index of the array in the upper left or lower left
    corner of the axes. The convention 'upper' is typically used for
    matrices and images.
    If not given, :rc:`image.origin` is used, defaulting to 'upper'.

    Note that the vertical axes points upward for 'lower'
    but downward for 'upper'.

    See the :doc:`/tutorials/intermediate/imshow_extent` tutorial for
    examples and a more detailed description.

extent : scalars (left, right, bottom, top), optional
    The bounding box in data coordinates that the image will fill.
    The image is stretched individually along x and y to fill the box.

    The default extent is determined by the following conditions.
    Pixels have unit size in data coordinates. Their centers are on
    integer coordinates, and their center coordinates range from 0 to
    columns-1 horizontally and from 0 to rows-1 vertically.

    Note that the direction of the vertical axis and thus the default
    values for top and bottom depend on *origin*:

    - For ``origin == 'upper'`` the default is
      ``(-0.5, numcols-0.5, numrows-0.5, -0.5)``.
    - For ``origin == 'lower'`` the default is
      ``(-0.5, numcols-0.5, -0.5, numrows-0.5)``.

    See the :doc:`/tutorials/intermediate/imshow_extent` tutorial for
    examples and a more detailed description.

filternorm : bool, optional, default: True
    A parameter for the antigrain image resize filter (see the
    antigrain documentation).  If *filternorm* is set, the filter
    normalizes integer values and corrects the rounding errors. It
    doesn't do anything with the source floating point values, it
    corrects only integers according to the rule of 1.0 which means
    that any sum of pixel weights must be equal to 1.0.  So, the
    filter function must produce a graph of the proper shape.

filterrad : float > 0, optional, default: 4.0
    The filter radius for filters that have a radius parameter, i.e.
    when interpolation is one of: 'sinc', 'lanczos' or 'blackman'.

resample : bool, optional
    When *True*, use a full resampling method.  When *False*, only
    resample when the output image is larger than the input image.

url : str, optional
    Set the url of the created `.AxesImage`. See `.Artist.set_url`.

Returns
-------
image : `~matplotlib.image.AxesImage`

Other Parameters
----------------
**kwargs : `~matplotlib.artist.Artist` properties
    These parameters are passed on to the constructor of the
    `.AxesImage` artist.

See also
--------
matshow : Plot a matrix or an array as an image.

**X:**
图像数据。支持的数组形状是:
(M,N) :带有标量数据的图像。数据可视化使用色彩图。
(M,N,3) :具有RGB值的图像(float或uint8)。
(M,N,4) :具有RGBA值的图像(float或uint8),即包括透明度。
前两个维度(M,N)定义了行和列图片,即图片的高和宽;
RGB(A)值应该在浮点数[0, ..., 1]的范围内,或者
整数[0, ... ,255]。超出范围的值将被剪切为这些界限。
**cmap:**
将标量数据映射到色彩图
颜色默认为:rc:image.cmap。
**norm :**
~matplotlib.colors.Normalize
如果使用scalar data ,则Normalize会对其进行缩放[0,1]的数据值内。
默认情况下,数据范围使用线性缩放映射到颜色条范围。 RGB(A)数据忽略该参数。
**aspect:**
{'equal','auto'}或float,可选
控制轴的纵横比。该参数可能使图像失真,即像素不是方形的。
equal:确保宽高比为1,像素将为正方形。(除非像素大小明确地在数据中变为非正方形,坐标使用 extent )。
auto: 更改图像宽高比以匹配轴的宽高比。通常,这将导致非方形像素。
**interpolation:**
str
使用的插值方法
支持的值有:'none', 'nearest', 'bilinear', 'bicubic','spline16', 'spline36', 'hanning', 'hamming', 'hermite', 'kaiser',
'quadric', 'catrom', 'gaussian', 'bessel', 'mitchell', 'sinc','lanczos'.
如果interpolation = 'none',则不执行插值
**alpha:**
alpha值,介于0(透明)和1(不透明)之间。RGBA输入数据忽略此参数。
**vmin, vmax : scalar,**
如果使用* norm 参数,则忽略 vmin , vmax *。
vmin,vmax与norm结合使用以标准化亮度数据。
**origin : {'upper', 'lower'}**
将数组的[0,0]索引放在轴的左上角或左下角。
'upper'通常用于矩阵和图像。
请注意,垂直轴向上指向“下”但向下指向“上”。
**extent:(left, right, bottom, top)**
数据坐标中左下角和右上角的位置。 如果为“无”,则定位图像使得像素中心落在基于零的(行,列)索引上。
import matplotlib.pyplot as plt
import numpy as np
np.random.seed(123456789)
data = np.random.rand(25).reshape(5, 5)

#plt.imshow()绘制一组矩阵或数组图像
#cmap设置配色方案,origin设置数组的索引方向,aspect设置坐标轴纵横比,vmin和vmax设置显示的值范围,
#alpha设置透明度,interpolation设置插值方法(默认为None)
plt.imshow(data,cmap='viridis', origin='lower', aspect='auto',vmin=-0.8, vmax=0.8, alpha=0.7, interpolation='None')
#plt.colorbar()绘制简单颜色条
plt.colorbar()

#xlim,ylim设置x轴和y轴的坐标范围
plt.imshow(data,cmap='viridis', origin='lower', aspect='auto',vmin=-0.8, vmax=0.8, alpha=0.7, interpolation='None')
plt.xlim(-1,5)
plt.ylim(5,-1)
plt.colorbar()

#interpolation用于设置插值方法
inter_list = ['nearest', 'bilinear', 'bicubic','spline16', 'spline36', 'hanning', 'hamming', 'hermite', 'kaiser',
'quadric', 'catrom', 'gaussian', 'bessel', 'mitchell', 'sinc','lanczos']

fig = plt.figure()
fig.subplots_adjust(hspace=0.6, wspace=0.2)
for i,itype in zip(range(1,17),inter_list):
    ax = fig.add_subplot(4,4,i)
    ax.imshow(data, cmap='viridis', origin='lower', interpolation=itype)
    ax.set_title(itype)

posted @ 2022-01-08 19:47  溪奇的数据  阅读(1851)  评论(0编辑  收藏  举报