[英]Custom xticks in seaborn heatmap
提示:本站为国内最大中英文翻译问答网站,提供中英文对照查看,鼠标放在中文字句上可显示英文原文。
我有以下热图(只是一个最小的工作示例,我的数据量很大!)
df = pd.DataFrame({'set1': ['0', '2', '2'],
'set2': ['1', '2', '0'],
'set3': ['0', '2', '1'],
'set4': ['1', '4', '1']
}).T.astype(float)
sns.heatmap(df, yticklabels = df.index, xticklabels = df.columns)
我怎样才能把 xticks 只放在那些所有rows>=2
的地方? 在此示例中,它意味着仅放置“1”xtick
因此,在此图像中不应出现“0”和“2”列名称,只能出现“1”,因为这是所有值都大于或等于 2 的列。
问题是 x 轴变得太拥挤了。 我只想显示所有值 >= 2 的列的 xticklabels。仍在绘制所有内容,但只显示那些 xticklabels。
您是否希望显示相同的热图,但只显示所有值 >=2 的 xticklabels? 一种方法可能是不在热图中使用 df.columns,而是屏蔽并仅显示您想要的那些。 看看这是不是你要找的……
df = pd.DataFrame({'set1': ['0', '2', '2'],
'set2': ['1', '2', '0'],
'set3': ['0', '2', '1'],
'set4': ['1', '4', '1']
}).T.astype(float)
cols = [] ## Declare a new list to be used for xticklabels
for col in df.columns:
if col in set(df.columns).intersection(df[df >= 2].T.dropna().index):
cols.append(col) ##If all values are >=2, then add to label list
else:
cols.append('') ## Else, add blank
sns.heatmap(df, yticklabels = df.index, xticklabels = cols) ##Plot using new list
>=
到指定值的列# create a Boolean mask of df
mask = df.ge(2)
# apply the mask to df and dropna
dfm = df[mask].dropna(axis=1)
# plot the masked df
ax = sns.heatmap(dfm)
mask
0 1 2
set1 False True True
set2 False True False
set3 False True False
set4 False True False
>=
到指定值的列的标签将替换为''
。# create a Boolean mask of df
mask = df.ge(2).all()
# use the mask to update a list of labels
cols = [col if m else '' for (col, m) in zip(df.columns, mask)]
# plot with custom labels
ax = sns.heatmap(df, xticklabels=cols)
mask
0 False
1 True
2 False
dtype: bool
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.