热力图
热力图(heat map)
一种将规则化矩阵数据转换成颜色色调的常用的可视化方法;
每个单元对应数据的某些属性;
属性的值通过颜色映射转换为不同色调并填充规则单元;
表格坐标的排列和顺序都可以通过参数控制;
适合的坐标排列和顺序可以很好地发现数据的不同性质;
绘制热力图
seaborn包的heatmap()函数、
plotnine包的geom_tile()函数、
matplotlib包的imshow()函数都可以绘制热力图;
seaborn包的clustermap()函数可以绘制带层次聚类的热力图;
层次聚类的结果数据一般使用树形图;
树形图(dendrogram)
表示连续合并的每对磊之间的属性距离的示意图;
示意图将以图形的方式进行排布;
使得要合并的每对类的成员在示意图中相邻;
树形图工具采用层次聚类算法;
先计算输入的特征文件中每对类之间的距离;
再迭代式地合并最近的一对类;
完成后续合并下一对最近的类;
直到合并完所有的类;
在每次合并后,每对类之间的距离会进行更新;
合并类特征时采用的距离将用于构建树形图;
树形图分类:
纵向树形图;
横向树形图;
环形树形图;
进化树形图;
绘制横向树形图
SciPy包的dendrogram()函数可以根据数据绘制树形图;
其中当orientation='top'时,绘制纵向树形图;
参数orientation='left'时,绘制横向树形图;
热力图
import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns
from plotnine.data import mtcars
from sklearn.preprocessing import scale
sns.set_style("white")
sns.set_context("notebook", font_scale=1.5,
rc={'axes.labelsize': 17, 'legend.fontsize':17,
'xtick.labelsize': 15,'ytick.labelsize': 10})
df=mtcars.set_index('name')
df.loc[:,:] = scale(df.values )
#热力图
fig=plt.figure(figsize=(7, 7),dpi=80)
sns.heatmap(df, center=0, cmap="RdYlBu_r",
linewidths=.15,linecolor='k')
#sns.set()
plt.savefig('heatmap2.pdf')
带层次聚类的热力图
import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns
from plotnine.data import mtcars
from sklearn.preprocessing import scale
sns.set_style("white")
sns.set_context("notebook", font_scale=1.5,
rc={'axes.labelsize': 17, 'legend.fontsize':17,
'xtick.labelsize': 15,'ytick.labelsize': 10})
df=mtcars.set_index('name')
df.loc[:,:] = scale(df.values )
#带层次聚类的热力图.
sns.clustermap(df, center=0, cmap="RdYlBu_r",
linewidths=.15,linecolor='k', figsize=(8, 8))
plt.savefig('heatmap1.pdf')
横向树形图
import scipy.cluster.hierarchy as shc
import numpy as np
from matplotlib import cm,colors
from matplotlib import pyplot as plt
import pandas as pd
from plotnine.data import mtcars
from sklearn.preprocessing import scale
plt.rcParams['axes.facecolor']='w'
plt.rc('axes',axisbelow=True)
df=mtcars.set_index('name')
df.loc[:,:] = scale(df.values )
#横向树形图
fig=plt.figure(figsize=(10, 10), dpi= 80)
dend = shc.dendrogram(shc.linkage(df,method='ward'), orientation='left',
labels=df.index.values, color_threshold=5
)
plt.xticks(fontsize=13,rotation=0)
plt.yticks(fontsize=14)
ax = plt.gca()
ax.spines['left'].set_color('none')
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('k')
ax.spines['bottom'].set_color('k')
#plt.savefig('树状图1.pdf')
plt.show()
纵向树形图
import scipy.cluster.hierarchy as shc
import numpy as np
from matplotlib import cm,colors
from matplotlib import pyplot as plt
import pandas as pd
from plotnine.data import mtcars
from sklearn.preprocessing import scale
plt.rcParams['axes.facecolor']='w'
plt.rc('axes',axisbelow=True)
df=mtcars.set_index('name')
df.loc[:,:] = scale(df.values )
#纵向树形图
fig=plt.figure(figsize=(5, 5), dpi= 80)
dend = shc.dendrogram(shc.linkage(df.values.T,method='ward'), orientation='top',
labels=df.columns.values, color_threshold=5,
)
plt.xticks(fontsize=13,rotation=0)
plt.yticks(fontsize=14)
ax = plt.gca()
ax.spines['left'].set_color('k')
ax.spines['right'].set_color('k')
ax.spines['top'].set_color('none')
ax.spines['bottom'].set_color('none')
#plt.savefig('树状图2.pdf')
plt.show()