使用 pandas 的 DataFrame 直接绘制热图(可聚类)


一、使用df绘制热图

代码如下(示例):

# -*- coding: utf-8 -*-
"""
Created on Mon Dec 21 15:25:59 2020

@author: dujidan
"""
import numpy as np
import pandas as pd
import seaborn as sns


# 读取文件, 存到字典中
# file = 'all_1'
file = 'all_dis_16fa.dis'
# file = 'all_dis_16fa_11.dis'
with open(file)as f:
    data = f.read().strip().split('\n')

data_dict = {}
for i in range(len(data)):
    if i % 2 == 0:
        if data[i] in data_dict:
            data_dict[data[i]].append([int(j) for j in data[i + 1].strip().split(' ')[1:]])
        if data[i] not in data_dict:
            data_dict[data[i]] = [[int(j) for j in data[i + 1].strip().split(' ')[1:]]]

# 求和操作
data_sum_dict = {}
for key in data_dict:
    for value in data_dict[key]:
        if key in data_sum_dict:
            data_sum_dict[key].append(sum(value))
        if key not in data_sum_dict:
            data_sum_dict[key] = [sum(value)]


# 绘制 热图
data_df = pd.DataFrame(data_sum_dict) # dict2df

data_df = data_df.apply(np.log1p) # 进行log(x+1)转换

# data_df[data_df>1000] = 1000

# 聚类热图
sns.clustermap(data_df.T,
                    row_cluster=True, # 行 聚类
                    col_cluster=False, # 列 聚类
                    cmap='coolwarm', # 颜色配置
                    )
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值