有没有办法根据 rows/columns 绘制数据框的热图?
Is there a way to plot a heatmap for a dataframe based on rows/columns?
我想问一下是否有人在 Pandas DataFrame 上做过热图,但在每个单独的列上(使用相同的颜色渐变显示 'low' 到 'high')。它更像是 Excel 中每列的条件格式(请参阅包含的图像)。我试过 sns.heatmap
,但它给出了整体情况。我有一个如下所示的 DataFrame:
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randint(0.1, 100, size = 30).reshape(5,6),
columns= ['A','B','C','D','E','F'], index = ['aa','bb', 'cc', 'dd', 'ee'])
我想做这样的东西。
使用 seaborn.heatmap
的一个技巧是将 min-max normalization 应用于 DataFrame 的每一列,以便将每一列的值重新缩放到范围 [0, 1].
重新缩放的值用于映射颜色,但您使用原始值注释热图(即传递 annot=df
)。
import seaborn as sns
import pandas as pd
df = pd.DataFrame(np.random.randint(0, 100, size = 30).reshape(5,6),
columns= ['A','B','C','D','E','F'], index = ['aa','bb', 'cc', 'dd', 'ee'])
norm_df = (df - df.min(0)) / (df.max(0) - df.min(0))
sns.heatmap(norm_df, annot=df, cmap="YlGn", cbar=False, lw=0.01)
输出
我想问一下是否有人在 Pandas DataFrame 上做过热图,但在每个单独的列上(使用相同的颜色渐变显示 'low' 到 'high')。它更像是 Excel 中每列的条件格式(请参阅包含的图像)。我试过 sns.heatmap
,但它给出了整体情况。我有一个如下所示的 DataFrame:
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randint(0.1, 100, size = 30).reshape(5,6),
columns= ['A','B','C','D','E','F'], index = ['aa','bb', 'cc', 'dd', 'ee'])
我想做这样的东西。
使用 seaborn.heatmap
的一个技巧是将 min-max normalization 应用于 DataFrame 的每一列,以便将每一列的值重新缩放到范围 [0, 1].
重新缩放的值用于映射颜色,但您使用原始值注释热图(即传递 annot=df
)。
import seaborn as sns
import pandas as pd
df = pd.DataFrame(np.random.randint(0, 100, size = 30).reshape(5,6),
columns= ['A','B','C','D','E','F'], index = ['aa','bb', 'cc', 'dd', 'ee'])
norm_df = (df - df.min(0)) / (df.max(0) - df.min(0))
sns.heatmap(norm_df, annot=df, cmap="YlGn", cbar=False, lw=0.01)
输出