matplotlib.colors.LightSource#

class matplotlib.colors.LightSource(azdeg=315, altdeg=45, hsv_min_val=0, hsv_max_val=1, hsv_min_sat=1, hsv_max_sat=0)[source]#

基类: object

创建一个来自指定方位角和仰角的光源。角度以度为单位,方位角从正北方向顺时针测量,仰角从曲面的零平面向上测量。

shade 用于为数据数组生成“阴影”RGB 值。shade_rgb 可用于将 RGB 图像与高程图结合。hillshade 生成曲面的照明图。

以度为单位指定光源的方位角(从正南方向顺时针测量)和高度(从曲面平面向上测量)。

参数:
azdeg浮点数,默认值:315 度(来自西北方向)

光源的方位角(0-360,从正北方向顺时针度数)。

altdeg浮点数,默认值:45 度

光源的高度(0-90,从水平方向向上度数)。

hsv_min_val数字,默认值:0

强度图可以将输出图像移至的最小值(“hsv”中的“v”)。

hsv_max_val数字,默认值:1

强度图可以将输出图像移至的最大值(“hsv”中的“v”)。

hsv_min_sat数字,默认值:1

强度图可以将输出图像移至的最小饱和度值。

hsv_max_sat数字,默认值:0

强度图可以将输出图像移至的最大饱和度值。

备注

为了向后兼容,参数 hsv_min_valhsv_max_valhsv_min_sathsv_max_sat 也可以在初始化时提供。但是,这些参数只有在“blend_mode='hsv'”传递给 shadeshade_rgb 时才会使用。有关更多详细信息,请参阅 blend_hsv 的文档。

blend_hsv(rgb, intensity, hsv_max_sat=None, hsv_max_val=None, hsv_min_val=None, hsv_min_sat=None)[source]#

获取输入数据数组,将其转换为给定颜色映射中的 HSV 值,然后调整这些颜色值以创建具有指定光源的阴影浮雕图。返回 RGBA 值,可用于使用 imshow 绘制阴影图像。

通过将阴影区域中的 (s, v) 值(在 HSV 颜色空间中)移向 (hsv_min_sat, hsv_min_val) 来使生成图像的颜色变暗,或通过将 (s, v) 值移向受光区域中的 (hsv_max_sat, hsv_max_val) 来使其变亮。默认的极值选择使得完全阴影的点接近黑色(s = 1, v = 0),而完全受光的点接近白色(s = 0, v = 1)。

参数:
rgbndarray

一个 (M, N, 3) RGB 浮点数数组,范围从 0 到 1(彩色图像)。

intensityndarray

一个 (M, N, 1) 浮点数数组,范围从 0 到 1(灰度图像)。

hsv_max_sat数字,可选

强度图可以将输出图像移至的最大饱和度值。如果未提供,则使用初始化时提供的值。

hsv_min_sat数字,可选

强度图可以将输出图像移至的最小饱和度值。如果未提供,则使用初始化时提供的值。

hsv_max_val数字,可选

强度图可以将输出图像移至的最大值(“hsv”中的“v”)。如果未提供,则使用初始化时提供的值。

hsv_min_val数字,可选

强度图可以将输出图像移至的最小值(“hsv”中的“v”)。如果未提供,则使用初始化时提供的值。

返回:
ndarray

表示组合图像的 (M, N, 3) RGB 数组。

blend_overlay(rgb, intensity)[source]#

使用“叠加”混合模式将 RGB 图像与强度图组合。

参数:
rgbndarray

一个 (M, N, 3) RGB 浮点数数组,范围从 0 到 1(彩色图像)。

intensityndarray

一个 (M, N, 1) 浮点数数组,范围从 0 到 1(灰度图像)。

返回:
ndarray

表示组合图像的 (M, N, 3) RGB 数组。

blend_soft_light(rgb, intensity)[source]#

使用“柔光”混合模式和“pegtop”公式将 RGB 图像与强度图组合。

参数:
rgbndarray

一个 (M, N, 3) RGB 浮点数数组,范围从 0 到 1(彩色图像)。

intensityndarray

一个 (M, N, 1) 浮点数数组,范围从 0 到 1(灰度图像)。

返回:
ndarray

表示组合图像的 (M, N, 3) RGB 数组。

property direction#

指向光源的单位向量方向。

hillshade(elevation, vert_exag=1, dx=1, dy=1, fraction=1.0)[source]#

使用为光源定义的方位角和仰角计算曲面的照明强度。

这将计算曲面的法线向量,然后将其传递给 shade_normals

参数:
elevation二维类数组

用于生成照明图的高度值

vert_exag数字,可选

计算照明时夸大高程值的量。这可用于校正 x-y 坐标系和高程坐标系(例如,十进制度与米)之间单位的差异,或夸大或弱化地形效应。

dx数字,可选

输入高程网格的 x 间距(列)。

dy数字,可选

输入高程网格的 y 间距(行)。

fraction数字,可选

增加或减少山体阴影的对比度。大于 1 的值将导致中间值更接近完全照明或阴影(并裁剪任何超出 0 或 1 的值)。请注意,这在视觉或数学上与垂直夸大不同。

返回:
ndarray

一个 0-1 之间的照明值二维数组,其中 0 表示完全在阴影中,1 表示完全受光。

shade(data, cmap, norm=None, blend_mode='overlay', vmin=None, vmax=None, vert_exag=1, dx=1, dy=1, fraction=1, **kwargs)[source]#

将颜色映射的数据值与值的照明强度图(又称“山体阴影”)结合。

参数:
data二维类数组

用于生成阴影图的高度值。

cmapColormap

用于为数据数组着色的颜色映射。请注意,这必须是 Colormap 实例。例如,不要传入 cmap='gist_earth',而应使用 cmap=plt.get_cmap('gist_earth')

normNormalize 实例,可选

在颜色映射之前用于缩放值的归一化。如果为 None,输入将在其最小值和最大值之间线性缩放。

blend_mode{'hsv', 'overlay', 'soft'} 或可调用对象,可选

用于将颜色映射的数据值与照明强度结合的混合类型。默认值为“overlay”。请注意,对于大多数地形表面,“overlay”或“soft”看起来更逼真。如果提供用户定义的函数,则该函数应将一个 (M, N, 3) 浮点数 RGB 数组(范围 0 到 1)与一个 (M, N, 1) 山体阴影数组(也是 0 到 1)结合。(调用签名 func(rgb, illum, **kwargs))提供给此函数的额外 kwargs 将传递给 blend_mode 函数。

vmin浮点数或 None,可选

在颜色映射数据中使用的最小值。如果为None,则使用数据中的最小值。如果指定了norm,则此参数将被忽略。

vmax浮点数或 None,可选

在颜色映射数据中使用的最大值。如果为None,则使用数据中的最大值。如果指定了norm,则此参数将被忽略。

vert_exag数字,可选

计算照明时夸大高程值的量。这可用于校正 x-y 坐标系和高程坐标系(例如,十进制度与米)之间单位的差异,或夸大或弱化地形。

dx数字,可选

输入高程网格的 x 间距(列)。

dy数字,可选

输入高程网格的 y 间距(行)。

fraction数字,可选

增加或减少山体阴影的对比度。大于 1 的值将导致中间值更接近完全照明或阴影(并裁剪任何超出 0 或 1 的值)。请注意,这在视觉或数学上与垂直夸大不同。

**kwargs

额外的 kwargs 将传递给 blend_mode 函数。

返回:
ndarray

一个范围在 0-1 之间的 (M, N, 4) 浮点数数组。

shade_normals(normals, fraction=1.0)[source]#

使用为光源定义的方位角和仰角,计算曲面法线向量的照明强度。

想象一个位于无限远处、具有特定方位角和仰角的人造太阳照亮我们的曲面。面向太阳倾斜的部分应该变亮,而背离太阳的部分应该变暗。

参数:
fraction数字,可选

增加或减少山体阴影的对比度。大于 1 的值将导致中间值更接近完全照明或阴影(并裁剪任何超出 0 或 1 的值)。请注意,这在视觉或数学上与垂直夸大不同。

返回:
ndarray

一个 0-1 之间的照明值二维数组,其中 0 表示完全在阴影中,1 表示完全受光。

shade_rgb(rgb, elevation, fraction=1.0, blend_mode='hsv', vert_exag=1, dx=1, dy=1, **kwargs)[source]#

使用此光源调整 rgb 输入数组的颜色,以根据给定的高程创建阴影浮雕图。

参数:
rgb类数组

一个 (M, N, 3) RGB 数组,假定范围在 0 到 1 之间。

elevation类数组

一个 (M, N) 数组,包含用于生成阴影图的高度值。

fraction数字

增加或减少山体阴影的对比度。大于 1 的值将导致中间值更接近完全照明或阴影(并裁剪任何超出 0 或 1 的值)。请注意,这在视觉或数学上与垂直夸大不同。

blend_mode{'hsv', 'overlay', 'soft'} 或可调用对象,可选

用于将颜色映射数据值与照明强度结合的混合类型。为了向后兼容,默认值为“hsv”。请注意,对于大多数地形表面,“overlay”或“soft”看起来更逼真。如果提供了用户定义的函数,则该函数应将一个 (M, N, 3) 浮点数 RGB 数组(范围从 0 到 1)与一个 (M, N, 1) 山体阴影数组(也是 0 到 1)结合。(调用签名 func(rgb, illum, **kwargs))提供给此函数的额外 kwargs 将传递给 blend_mode 函数。

vert_exag数字,可选

计算照明时夸大高程值的量。这可用于校正 x-y 坐标系和高程坐标系(例如,十进制度与米)之间单位的差异,或夸大或弱化地形。

dx数字,可选

输入高程网格的 x 间距(列)。

dy数字,可选

输入高程网格的 y 间距(行)。

**kwargs

额外的 kwargs 将传递给 blend_mode 函数。

返回:
ndarray

一个范围在 0-1 之间的 (m, n, 3) 浮点数数组。

使用 matplotlib.colors.LightSource 的示例#

着色示例

着色示例

AGG 过滤器

AGG 过滤器

三维曲面图中的自定义山体阴影

三维曲面图中的自定义山体阴影

着色和功率归一化渲染

着色和功率归一化渲染

山体阴影

山体阴影

地形山体阴影

地形山体阴影