文章目录
一、使用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', # 颜色配置
)