📜  Python中的 Matplotlib.colors.Normalize 类

📅  最后修改于: 2022-05-13 01:54:51.148000             🧑  作者: Mango

Python中的 Matplotlib.colors.Normalize 类

Matplotlib是Python中用于数组二维图的惊人可视化库。 Matplotlib 是一个基于 NumPy 数组构建的多平台数据可视化库,旨在与更广泛的 SciPy 堆栈配合使用。

matplotlib.colors.Normalize

matplotlib.colors.Normalize类属于matplotlib.colors模块。 matplotlib.colors 模块用于将颜色或数字参数转换为 RGBA 或 RGB。此模块用于将数字映射到颜色或在一维颜色数组(也称为颜色图)中进行颜色规范转换。
matplotlib.colors.Normalize 类用于将数据标准化为 [0.0, 1.0] 的区间。
句法:

如果未设置 vmin 或 vmax 中的任何一个,则它分别从处理的第一个输入的最小值和最大值初始化。换句话说,__call__(Data) 调用 autoscale_None(Data)。如果 clip 的值设置为 True 并且给定值超出范围,则返回 0 或 1,以最接近的为准。如果 vmax==vmin 则返回 0。它对标量或数组(包括掩码数组)进行操作。如果剪辑为真,则掩码值设置为 1,否则它们保持掩码。
方法:

  1. autoscale(self, A):此方法将 vmin 设置为 A 的最小值,并将 vmax 设置为 A 的最大值。
  2. autoscale_None(self, A):此方法仅自动缩放具有 None 值的 vmin 和 vmax。
  3. inverse(self, value):交换 vmin 和 vmax 的值。
  4. static process_value(value):该方法中的value参数可以是标量,也可以是序列。它用于均匀化输入值以实现高效和简单的标准化。此方法返回匹配值的掩码数组。所有浮点数据类型都被保留,具有两个或更小字节的整数数据类型转换为 np.float32,而较大的字节类型转换为 np.float64。这样做是为了通过使用就地操作尽可能保留 float32 值来提高较大数组的速度。
  5. scaled(self):它返回一个布尔值来检查是否设置了 vmin 或 vmax。

示例 1:

Python3
import matplotlib.pyplot as plt
import numpy as np
from matplotlib import colors
from matplotlib.ticker import PercentFormatter
 
# set a  random state for
# reproducibility
np.random.seed(19687581)
 
total_points = 500000
total_bins = 100
 
# Centering at a = 0 and b = 5
# generate normal distributions
a = np.random.randn(total_points)
b = .4 * a + np.random.randn(500000) + 5
 
figure, axes = plt.subplots(1, 2,
                            tight_layout = True)
 
# C is the count in each bin
C, bins, patches = axes[0].hist(a,
                                bins = total_bins)
 
# We'll color code by height,
# but you could use any scalar
fracs = C / C.max()
 
# Normalize of  the data to 0..1
# for covering the full range of
# the colormap
norm = colors.Normalize(fracs.min(), fracs.max())
 
# looping through the objects and
# setting the color of each accordingly
for thisfrac, thispatch in zip(fracs, patches):
    color = plt.cm.viridis(norm(thisfrac))
    thispatch.set_facecolor(color)
 
# normalize the inputs by C
axes[1].hist(a, bins = total_bins, density = True)
 
# formating the y-axis for displaying
# percentage
axes[1].yaxis.set_major_formatter(PercentFormatter(xmax = 1))


Python3
import matplotlib.pyplot as plt
import matplotlib as mpl
 
figure, axes = plt.subplots(figsize =(6, 1))
figure.subplots_adjust(bottom = 0.5)
 
color_map = mpl.cm.cool
normalizer = mpl.colors.Normalize(vmin = 0, vmax = 5)
 
figure.colorbar(mpl.cm.ScalarMappable(norm = normalizer,
               cmap = color_map),
               cax = axes, orientation ='horizontal',
               label ='Arbitrary Units')


输出:

示例 2:

Python3

import matplotlib.pyplot as plt
import matplotlib as mpl
 
figure, axes = plt.subplots(figsize =(6, 1))
figure.subplots_adjust(bottom = 0.5)
 
color_map = mpl.cm.cool
normalizer = mpl.colors.Normalize(vmin = 0, vmax = 5)
 
figure.colorbar(mpl.cm.ScalarMappable(norm = normalizer,
               cmap = color_map),
               cax = axes, orientation ='horizontal',
               label ='Arbitrary Units')

输出: