为什么 background_gradient 不适用于两种不同的颜色?
Why background_gradient is not working for two different colors?
我正在尝试为不同的列设置不同颜色的背景渐变。为什么最后一种颜色会覆盖之前的颜色?如何保持两种颜色?
import pandas as pd
import numpy as np
arrays = [np.hstack([['One']*2, ['Two']*2]) , ['A', 'B', 'A', 'B']]
columns = pd.MultiIndex.from_arrays(arrays)
data = pd.DataFrame(np.random.randn(5, 4), columns=list('ABCD'))
data.columns = columns
import seaborn as sns
cm = sns.light_palette("green", as_cmap=True)
cc = sns.light_palette("red", as_cmap=True)
data.style.background_gradient(cmap=cm, subset=data.columns.get_loc_level('A', level=1)[0])
data.style.background_gradient(cmap=cc, subset=data.columns.get_loc_level('B', level=1)[0])
每次调用 DataFrame.style
都会生成一个唯一的样式器对象。这样同一个 DataFrame 可以很容易地以不同的方式设置样式而不会相互影响。
要应用复合样式或一般的多种样式,请将返回的样式器存储为变量并重新使用它:
cm = sns.light_palette("green", as_cmap=True)
cc = sns.light_palette("red", as_cmap=True)
styler = data.style # Keep Styler for reuse
styler.background_gradient(
cmap=cm,
subset=data.columns.get_loc_level('A', level=1)[0]
)
styler.background_gradient(
cmap=cc,
subset=data.columns.get_loc_level('B', level=1)[0]
)
或链接单个样式器对象:
cm = sns.light_palette("green", as_cmap=True)
cc = sns.light_palette("red", as_cmap=True)
data.style.background_gradient(
cmap=cm,
subset=data.columns.get_loc_level('A', level=1)[0]
).background_gradient(
cmap=cc,
subset=data.columns.get_loc_level('B', level=1)[0]
)
两者都产生样式 table:
可用种子 5 重现:
import numpy as np
import pandas as pd
import seaborn as sns
np.random.seed(5)
data = pd.DataFrame(
np.random.randn(5, 4),
columns=pd.MultiIndex.from_product([['One', 'Two'], ['A', 'B']])
)
我正在尝试为不同的列设置不同颜色的背景渐变。为什么最后一种颜色会覆盖之前的颜色?如何保持两种颜色?
import pandas as pd
import numpy as np
arrays = [np.hstack([['One']*2, ['Two']*2]) , ['A', 'B', 'A', 'B']]
columns = pd.MultiIndex.from_arrays(arrays)
data = pd.DataFrame(np.random.randn(5, 4), columns=list('ABCD'))
data.columns = columns
import seaborn as sns
cm = sns.light_palette("green", as_cmap=True)
cc = sns.light_palette("red", as_cmap=True)
data.style.background_gradient(cmap=cm, subset=data.columns.get_loc_level('A', level=1)[0])
data.style.background_gradient(cmap=cc, subset=data.columns.get_loc_level('B', level=1)[0])
每次调用 DataFrame.style
都会生成一个唯一的样式器对象。这样同一个 DataFrame 可以很容易地以不同的方式设置样式而不会相互影响。
要应用复合样式或一般的多种样式,请将返回的样式器存储为变量并重新使用它:
cm = sns.light_palette("green", as_cmap=True)
cc = sns.light_palette("red", as_cmap=True)
styler = data.style # Keep Styler for reuse
styler.background_gradient(
cmap=cm,
subset=data.columns.get_loc_level('A', level=1)[0]
)
styler.background_gradient(
cmap=cc,
subset=data.columns.get_loc_level('B', level=1)[0]
)
或链接单个样式器对象:
cm = sns.light_palette("green", as_cmap=True)
cc = sns.light_palette("red", as_cmap=True)
data.style.background_gradient(
cmap=cm,
subset=data.columns.get_loc_level('A', level=1)[0]
).background_gradient(
cmap=cc,
subset=data.columns.get_loc_level('B', level=1)[0]
)
两者都产生样式 table:
可用种子 5 重现:
import numpy as np
import pandas as pd
import seaborn as sns
np.random.seed(5)
data = pd.DataFrame(
np.random.randn(5, 4),
columns=pd.MultiIndex.from_product([['One', 'Two'], ['A', 'B']])
)