pandas.io.formats.style.Styler.background_gradient#

Styler.background_gradient(cmap='PuBu', low=0, high=0, axis=0, subset=None, text_color_threshold=0.408, vmin=None, vmax=None, gmap=None)[源代码][源代码]#

以渐变样式为背景着色。

背景颜色根据每列、行或帧中的数据确定,或通过给定的渐变图确定。需要 matplotlib。

参数:
cmapstr 或 colormap

Matplotlib 色图。

float

在低端压缩颜色范围。这是数据范围以下扩展的倍数;通常好的值在 [0, 1] 之间,默认为 0。

float

在高处压缩颜色范围。这是数据范围在最大值之上扩展的倍数;通常好的值在 [0, 1] 之间,默认为 0。

{0, 1, “index”, “columns”, None}, 默认 0

应用于每一列(axis=0'index'),应用于每一行(axis=1'columns'),或一次性应用于整个 DataFrame(axis=None)。

子集label, 类似数组, IndexSlice, 可选

一个有效的 2d 输入到 DataFrame.loc[<subset>],或者,在 1d 输入或单个键的情况下,到 DataFrame.loc[:, <subset>],其中列优先,以限制 data 在应用函数 之前

text_color_threshold浮点数或整数

亮度阈值用于确定 [0, 1] 范围内的文本颜色。有助于文本

在不同背景颜色下的可见性。如果为0,所有文本都是深色的。

light 如果为 1,默认为 0.408。

vmin浮点数, 可选

对应于色标最小值的最小数据值。如果未指定,将使用数据(或 gmap)的最小值。

vmax浮点数, 可选

对应于色标最大值的最大数据值。如果未指定,将使用数据(或 gmap)的最大值。

gmap类似数组,可选

用于确定背景颜色的渐变图。如果未提供,将使用来自行、列或框架的基础数据。如果以 ndarray 或类似列表的形式给出,则必须与考虑 axissubset 的基础数据形状相同。如果以 DataFrame 或 Series 形式给出,则必须具有相同的索引和列标签,考虑 axissubset。如果提供,vminvmax 应相对于此渐变图给出。

Added in version 1.3.0.

返回:
Styler

参见

Styler.text_gradient

以渐变样式为文本着色。

注释

当使用 lowhigh 时,如果没有给出 gmap 或由 gmap 给出的梯度范围,在颜色归一化和确定之前,会在低端有效地扩展 map.min - low * map.range,在高端扩展 map.max + high * map.range

如果与 vminvmax 结合使用,map.minmap.maxmap.range 将根据从 vminvmax 派生的值替换为相应的值。

此方法将预先选择数值列并忽略非数值列,除非提供了 gmap ,在这种情况下不会发生预选择。

例子

>>> df = pd.DataFrame(
...     columns=["City", "Temp (c)", "Rain (mm)", "Wind (m/s)"],
...     data=[
...         ["Stockholm", 21.6, 5.0, 3.2],
...         ["Oslo", 22.4, 13.3, 3.1],
...         ["Copenhagen", 24.5, 0.0, 6.7],
...     ],
... )

按列着色值,使用 axis=0,预选数值列

>>> df.style.background_gradient(axis=0)  
../../_images/bg_ax0.png

使用 axis=None 集体着色所有值

>>> df.style.background_gradient(axis=None)  
../../_images/bg_axNone.png

lowhigh 两端压缩颜色映射

>>> df.style.background_gradient(axis=None, low=0.75, high=1.0)  
../../_images/bg_axNone_lowhigh.png

手动设置 vminvmax 梯度阈值

>>> df.style.background_gradient(axis=None, vmin=6.7, vmax=21.6)  
../../_images/bg_axNone_vminvmax.png

设置一个 gmap 并将其应用于所有列,同时应用另一个 cmap

>>> df.style.background_gradient(axis=0, gmap=df['Temp (c)'], cmap='YlOrRd')
... 
../../_images/bg_gmap.png

设置数据框的渐变图(即 axis=None),我们需要明确声明 subset 以匹配 gmap 的形状

>>> gmap = np.array([[1, 2, 3], [2, 3, 4], [3, 4, 5]])
>>> df.style.background_gradient(axis=None, gmap=gmap,
...     cmap='YlOrRd', subset=['Temp (c)', 'Rain (mm)', 'Wind (m/s)']
... )  
../../_images/bg_axNone_gmap.png