Rat*_*ons 5 python matplotlib pandas pandas-styles
不确定是否可以在 pandas Styler 对象的框架下利用 matplotlib 的DivergingNorm 来绘制颜色图。举个例子:
import pandas as pd
import matplotlib.cm
# retrieve red-yellow-green diverging color map
cmap = matplotlib.cm.get_cmap('RdYlGn')
# create sample pd.DataFrame
ix = pd.date_range(start=pd.Timestamp(2020, 1, 1), periods=4)
df = pd.DataFrame(index=ix, columns=['D/D CHANGE'], data=[-1, 0, 2, 5])
df.style.background_gradient(cmap=cmap)
Run Code Online (Sandbox Code Playgroud)
理想情况下,只有负(正)值才会显示为红色(绿色)。
看起来没有一个选项可以传递自定义规范化background_gradient(也许可能是在 pandas github 上发布的功能请求)。但您可以使用自定义函数来获得所需的结果:
def background_with_norm(s):
cmap = matplotlib.cm.get_cmap('RdYlGn')
norm = matplotlib.colors.DivergingNorm(vmin=s.values.min(), vcenter=0, vmax=s.values.max())
return ['background-color: {:s}'.format(matplotlib.colors.to_hex(c.flatten())) for c in cmap(norm(s.values))]
# create sample pd.DataFrame
ix = pd.date_range(start=pd.Timestamp(2020, 1, 1), periods=4)
df = pd.DataFrame(index=ix, columns=['D/D CHANGE'], data=[-1, 0, 2, 5])
df.style.apply(background_with_norm)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4176 次 |
| 最近记录: |