【发布时间】:2020-11-20 16:01:50
【问题描述】:
我正在尝试创建一个带有简单是/否指示的图表(在本例中,使用 seaborn 的热图),但具有多个索引——我通过调用 MultiIndex.from_arrays 方法建立的层次结构。下面列出的代码从下面链接中列出的示例数据中提取,生成此热图:CurrentGraph
什么是最简单的方法 1) 删除最外层的索引标签 ("Type of Category....", "None-None") 2) 更改下一个内部索引标签的显示选项和/或颜色格式? (A类、B类、Loc1、Loc2、Loc3)
目前,它们的显示方式不是很容易看;我想这样做,因此该层中的每个标签的文本只显示一次,并且沿着 MultiIndex.from_arrays 方法中匹配的行/列居中,而不是拼接到每个条目的开头。如果可能的话,我还想在每个“部分”(A 类、B 类、Loc1、Loc2、Loc3)下面放置不同的背景颜色,以便它们在图表上看起来更明显。
有没有一种简单的方法可以使用热图/Seaborn 进行这种编辑,或者这是我必须从头开始制作的东西?对此的任何帮助表示赞赏,因为我对此仍然很陌生。
http://www.filedropper.com/heatmapdata
编辑:在代码之前添加示例数据作为下面的文本
Type of Category Variables Division 01 Division 02 Division 03 Division 04 Division 05 Division 06 Division 07 \\
Category A V1 0 1 1 0 0 0 1 \\
Category A V2 1 1 1 0 0 0 1 \\
Category A V3 1 1 1 0 0 1 1 \\
Category A V4 0 0 1 1 1 1 0 \\
Category A V5 0 1 1 1 0 0 0 \\
Category A V6 1 1 1 1 0 0 1 \\
Category B V7 1 0 0 1 0 0 1
import seaborn as sns; sns.set()
import pandas as pd
import matplotlib.pyplot as plt
metrics = pd.read_excel(r'EnterYourFileLocationHere\Heatmap data.xlsx', sheet_name='Example_Data')
metrics.set_index([metrics.columns[0], metrics.columns[1]], inplace=True)
metrics.columns = pd.MultiIndex.from_arrays([['Loc1', 'Loc1', 'Loc1', 'Loc2',
'Loc2', 'Loc3', 'Loc3'],
['Division 01', 'Division 02',
'Division 03', 'Division 04',
'Divsion 05', 'Division06',
'Division07']])
graph = sns.heatmap(metrics, annot=True, fmt = "d", linewidth=0.5, cmap="Blues", cbar=False)
【问题讨论】:
标签: python pandas matplotlib seaborn