You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Seaborn clustermap显示列数少于输入DataFrame的原因咨询

Seaborn clustermap生成图表列数少于输入DataFrame列数的原因分析

针对70行64列计数型DataFrame(无全0行/列,但多数值为0)调用clustermap后列数显示不足的问题,可能的原因及验证方法如下:

可能原因

  • 列标签重复:如果DataFrame存在重复列名,Seaborn会自动合并同名列,导致显示列数减少。可通过cluster_df.columns.duplicated().any()检查是否存在重复列名。
  • 列特征高度相似导致聚类合并:即使没有全0列,若多列的数值分布完全一致(比如非0值的位置和数量完全相同),层次聚类时会被聚为高度重合的分支,可视化时列会重叠显示,看起来像是列数减少。
  • 绘图区域尺寸不足导致列重叠:当列数较多但绘图窗口宽度不够时,Seaborn会自动压缩列宽,造成列与列重叠,视觉上显示的列数少于实际数量。
  • 数据读取异常:执行pd.read_csv时若出现分隔符错误、列解析异常等问题,可能导致实际读取的DataFrame列数不足64列,需先确认数据读取后的维度。

针对自定义聚类代码的额外检查

你自定义列聚类时使用了二进制转换后的转置数据,需确认:

  • 转置后的特征矩阵形状是否正确(应为64行,对应原DataFrame的64列)
  • 列聚类树状图是否存在大量重合分支:
import matplotlib.pyplot as plt
scipy.cluster.hierarchy.dendrogram(col_clus)
plt.show()

验证与解决方法

  1. 确认数据读取后的维度:
print(cluster_df.shape)  # 应输出 (70, 64)
  1. 检查列名重复情况:
print(cluster_df.columns.duplicated().sum())  # 输出0则无重复列名
  1. 增大绘图尺寸重新生成clustermap:
sns.clustermap(cluster_df, figsize=(20, 10))  # 调整figsize参数适配列数

内容的提问来源于stack exchange,提问作者Lamma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 14:02:08