python 热力图_python高维数据型图表热力图、树形图

本文介绍了Python中绘制热力图和树形图的方法,包括使用seaborn、matplotlib和plotnine等库。热力图是一种可视化规则矩阵数据的有效方式,而树形图则用于表示层次聚类的结果。文中详细讲解了如何绘制带层次聚类的热力图以及横向和纵向树形图。
摘要由CSDN通过智能技术生成

d32a4c7bffe83b9086d9792e05e4947b.png

热力图

热力图(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()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值