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)[源代码][源代码]#

基类:object

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

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

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

参数:
azdegfloat, 默认值: 315度 (从西北方向)

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

altdeg浮动,默认:45度

光源的海拔高度(0-90度,从水平线向上)。

hsv_min_valnumber, 默认: 0

最小值(“hsv”中的“v”),即 强度 映射可以将输出图像偏移到的最小值。

hsv_max_valnumber, 默认值: 1

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

hsv_min_satnumber, 默认值: 1

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

hsv_max_satnumber, 默认: 0

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

注释

为了向后兼容,参数 hsv_min_valhsv_max_valhsv_min_sathsv_max_sat 也可以在初始化时提供。然而,这些参数仅在 shadeshade_rgb 中传递 "blend_mode='hsv'" 时才会被使用。更多详情请参阅 blend_hsv 的文档。

blend_hsv(rgb, intensity, hsv_max_sat=None, hsv_max_val=None, hsv_min_val=None, hsv_min_sat=None)[源代码][源代码]#

取输入数据数组,将其转换为给定色图中的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(彩色图像)。

强度 : ndarrayndarray

一个范围从0到1的浮点数数组(灰度图像),形状为 (M, N, 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)[源代码][源代码]#

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

参数:
rgbndarray

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

强度 : ndarrayndarray

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

返回:
ndarray

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

blend_soft_light(rgb, intensity)[源代码][源代码]#

使用“pegtop”公式,通过“柔光”混合将RGB图像与强度图结合。

参数:
rgbndarray

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

强度 : ndarrayndarray

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

返回:
ndarray

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

property direction#

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

hillshade(elevation, vert_exag=1, dx=1, dy=1, fraction=1.0)[源代码][源代码]#

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

这计算了表面的法向量,然后将它们传递给 shade_normals

参数:
海拔2D 类数组

用于生成光照图的高度值

vert_exag数字, 可选

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

dx数字, 可选

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

dy数字, 可选

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

分数数字, 可选

增加或减少山体阴影的对比度。大于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)[源代码][源代码]#

将颜色映射数据值与光照强度图(也称为“山体阴影”)的值结合起来。

参数:
数据2D 类数组

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

cmap颜色映射

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

norm : Normalize 实例, 可选规范化实例,可选

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

混合模式{'hsv', 'overlay', 'soft'} 或可调用对象,可选

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

vmin浮点数或无,可选

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

vmax浮点数或无,可选

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

vert_exag数字, 可选

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

dx数字, 可选

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

dy数字, 可选

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

分数数字, 可选

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

**kwargs

额外的 kwargs 会被传递给 blend_mode 函数。

返回:
ndarray

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

shade_normals(normals, fraction=1.0)[源代码][源代码]#

使用定义的光源方位角和仰角计算表面法线的光照强度。

想象一下,在某个方位和仰角位置,将一个人造太阳放置在无穷远处,照亮我们的表面。朝向太阳的表面部分应该变得更亮,而背对太阳的部分应该变得更暗。

参数:
分数数字, 可选

增加或减少山体阴影的对比度。大于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)[源代码][源代码]#

使用此光源调整 rgb 输入数组的色彩,以产生带有给定 elevation 的阴影浮雕地图的视觉效果。

参数:
rgb类数组

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

海拔类数组

用于生成阴影地图的高度值的 (M, N) 数组。

分数数字

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

混合模式{'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数字, 可选

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

dy数字, 可选

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

**kwargs

额外的 kwargs 会被传递给 blend_mode 函数。

返回:
ndarray

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

使用 matplotlib.colors.LightSource 的示例#

阴影示例

Shading example

阴影与功率归一化渲染

Shaded & power normalized rendering

AGG 过滤器

AGG filter

3D 表面图中的自定义山体阴影

Custom hillshading in a 3D surface plot

山体阴影

Hillshading

地形山体阴影

Topographic hillshading