【问题标题】:How to reverse cmap for select rows in table如何为表中的选择行反转cmap
【发布时间】:2021-07-24 07:30:31
【问题描述】:

我正在尝试对从 csv 文件中的数据创建的表中的行进行样式设置。我正在使用 Jupyter Notebook 运行我的 python 代码。我的csv文件中的数据如下:

[[' ', 'VZ', 'T', 'TMUS'],
['Current Ratio', 1.4, .8, 1.1],
['Quick Ratio', 1.3, .8, 1.0],
['Debt to Equity', 1.9, .97, 1.17],
['LT Debt to Equity', 1.82, .95, 1.09],
['ROA', 6.1, 2.0, 1.8],
['ROI', 10.9, 1.7, 4.1],
['Gross Margin', 59.5, 52.7, 59.6],
['Oper. Margin', 19.1, 13.0, 9.7],
['Profit Margin', 14.1, 6.3, 4.5]]

csv 保存到我的桌面,我正在使用 pandas read_csv 读取它:

import pandas as pd

data = pd.read_csv('/Users/broderickbonelli/Desktop/test.csv', index_col=" ")

我的目标是使用“RdYlGn”颜色图正确地对表格进行颜色编码。我正在使用 .style.background_gradient()。

data = data.style.background_gradient(axis=1, cmap='RdYlGn')

display(data)

这会将颜色图应用于整个表格。我遇到的问题是各种行(债务到股权行)需要一个反转的颜色图,同时保持表格的其余部分相同/不变。

我现在只需要反转“债务到权益”和“长期债务到权益”行的颜色图,因为高值应该是红色,低值应该是绿色。我能够将行定位为子集并应用反向 cmap 'RdYlGn_r' 但现在渐变没有正确应用,因为所有列都是相同的颜色。

我试过的代码是:

data = data.style.background_gradient(axis=1, cmap='RdYlGn').set_precision(2).background_gradient(cmap='RdYlGn_r',  subset=(data.index[2], data.columns)).background_gradient(cmap='RdYlGn_r', subset=(data.index[3], data.columns))

display(data)

Table

我不确定为什么梯度不能正确应用于债转股行,但当我应用于整个表时。任何帮助将不胜感激!

【问题讨论】:

    标签: python pandas dataframe csv jupyter-notebook


    【解决方案1】:

    最好的办法是从 matplotlib 导入一个颜色映射对象并使用 reversed 方法,然后将反转的颜色映射提供给 cmap 参数:

    https://matplotlib.org/stable/api/_as_gen/matplotlib.colors.Colormap.html#matplotlib.colors.Colormap

    在 pandas 1.3.0(即将发布)中有一个新的关键字参数gmap,它允许您为渐变图提供自己的值,在这种情况下,如果您这样做了,将应用快速反转:df.style.background_gradient(cmap="RdYlGn", gmap=-df)

    【讨论】:

    • 非常感谢!是的,反向方法 _r 是我用于索引 [2] 和索引 [3] 的方法,但是它没有像我应用到所有行时那样正确应用渐变: background_gradient(axis=1, cmap='RdYlGn' )
    猜你喜欢
    • 1970-01-01
    • 2022-11-11
    • 1970-01-01
    • 2011-12-03
    • 2021-10-01
    • 2011-04-08
    • 2015-12-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多