带有来自两个不同数据框列的多种配色方案的带注释的热图
Annotated heatmap with multiple color schemes from two different columns of dataframe
我有以下格式的数据框:
Percent category MolA MolB
20 1 02K@sc 81G@bs
15 0 04F@sc 79U@bs
16 2 04F@sc 79U@sg
18 1 04F@sc 80A@bs
4 0 04F@sc 80A@ph
我想根据百分比值绘制 MolA 列与 MolB 的对比图。对于着色每个类别应该是不同的颜色,例如 0 --> 蓝色,1 --> 红色,2--> 绿色然后这些颜色的 hue/shades 将根据百分比。
我试过使用 sns.colorpalette("YlGnBu", 30)
但这并不是我想要的,而且这对于区分两个不同的类别似乎不是很清楚。
是否可以这样绘制数据框?
可以利用热图的行为,通过遍历每个类别自动从地图中排除空值,排除不在该类别中的 Percent
并为生成的枢轴制作热图 table.如果你循环,你可能会得到你想要的。
import pandas as pd
df = pd.DataFrame({'Percent': [20, 15, 16, 18, 4],
'category': [1, 0, 2, 1, 0],
'MolA': ['02K@sc', '04F@sc', '04F@sc', '04F@sc', '04F@sc'],
'MolB': ['81G@bs', '79U@bs', '79U@sg', '80A@bs', '80A@ph']})
palettes = ['Blues','Greens','Oranges']
for c, p in zip(df.category.unique(), palettes):
t = df.copy()
t['Percent'] = np.where(t['category'].ne(c), np.nan, df['Percent'])
sns.heatmap(t.pivot('MolA','MolB','Percent'), cbar=False, cmap=p, annot=True)
我有以下格式的数据框:
Percent category MolA MolB
20 1 02K@sc 81G@bs
15 0 04F@sc 79U@bs
16 2 04F@sc 79U@sg
18 1 04F@sc 80A@bs
4 0 04F@sc 80A@ph
我想根据百分比值绘制 MolA 列与 MolB 的对比图。对于着色每个类别应该是不同的颜色,例如 0 --> 蓝色,1 --> 红色,2--> 绿色然后这些颜色的 hue/shades 将根据百分比。
我试过使用 sns.colorpalette("YlGnBu", 30)
但这并不是我想要的,而且这对于区分两个不同的类别似乎不是很清楚。
是否可以这样绘制数据框?
可以利用热图的行为,通过遍历每个类别自动从地图中排除空值,排除不在该类别中的 Percent
并为生成的枢轴制作热图 table.如果你循环,你可能会得到你想要的。
import pandas as pd
df = pd.DataFrame({'Percent': [20, 15, 16, 18, 4],
'category': [1, 0, 2, 1, 0],
'MolA': ['02K@sc', '04F@sc', '04F@sc', '04F@sc', '04F@sc'],
'MolB': ['81G@bs', '79U@bs', '79U@sg', '80A@bs', '80A@ph']})
palettes = ['Blues','Greens','Oranges']
for c, p in zip(df.category.unique(), palettes):
t = df.copy()
t['Percent'] = np.where(t['category'].ne(c), np.nan, df['Percent'])
sns.heatmap(t.pivot('MolA','MolB','Percent'), cbar=False, cmap=p, annot=True)