我试图在枢轴熊猫数据帧上使用seaborn的热图,就像在超链接中一样有效
df = pd.DataFrame(np.random.randint(1,100,size = (3,2)))
df.columns = ['A','B']
df
sns.heatmap(df, annot=True, fmt="d", linewidths=.5,cmap="RdYlGn")
代码块的输出 - 整个数据帧格式化为单个热图 https://i.stack.imgur.com/zJG16.png输出选择 45 作为最小值,86 作为最大值,并对整个数据帧进行颜色编码
但我无法做的是明智地应用热图列
即,像条件格式逐列应用而不是整个数据框。就像这个超链接的示例一样 -
所需/预期输出 https://i.stack.imgur.com/3uHT2.png
对于 col1,选择最小值 45 和最大值 88 并进行格式化,对于 col2 分别选择 70 和 86
按列条件格式化,但仍显示为表格。
。在示例中,我看到 df 的其余部分被设置为零并且只有 1 列被格式化,或者整个数据帧都被格式化
任何人都可以帮忙解决这个问题吗
您还可以将每列缩放为最小值 0 和最大值 1,将其传递到热图,并使用原始值进行注释。
scaled_df = (df - df.min(axis=0))/(df.max(axis=0) - df.min(axis=0))
sns.heatmap(scaled_df, annot=df, fmt="d", linewidths=.5, cmap="RdYlGn")
请注意,您可能希望使用以下命令删除颜色条cbar=False
因为解决方案必然需要每列不同的比例。
交替,sklearn.preprocessing.minmax_scale
可以使用它来代替手动缩放。
from sklearn.preprocessing import minmax_scale
scaled_df = minmax_scale(df)
sns.heatmap(scaled_df, annot=df, fmt="d", linewidths=.5, cmap="RdYlGn")
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)