python 作图:heatmap

导入几个库

import numpy as np
from numpy import random
import pandas as pdimport matplotlib.pyplot as pltimport seaborn as sns
sns.set()

基本例子

我们以一个 N×NN\times NN×N 矩阵为例。

N = 20
R = random.randn(N, N)

我们先绘制一个最基本的 heatmap(热图):

fig = plt.figure()
sns_plot = sns.heatmap(R)
# fig.savefig("heatmap.pdf", bbox_inches='tight') # 减少边缘空白
plt.show()

显示值

根据该 N×NN\times NN×N 矩阵值的大小体现在热图中。查看值的分布,可以采用 annot=True

N = 5
R = random.randn(N, N)fig = plt.figure()
sns_plot = sns.heatmap(R, annot=True)plt.show()

新的调整

我们发现,维度大的时候,坐标轴刻度会太密集而看不清,而且刻度上的字体很小。如何调整,如下:

  • 刻度的步长调大 xticklabels
  • 刻度字体大小 labelsize
N = 20
R = random.randn(N, N)# fig, ax = plt.subplots(figsize=(12,9))
fig = plt.figure()
# cmap='RdBu_r' 颜色主题风格   xticklabels 代表步长
sns_plot = sns.heatmap(R, cmap='YlGnBu', xticklabels=8, yticklabels=8)sns_plot.tick_params(labelsize=15) # heatmap 刻度字体大小
# colorbar 刻度线设置
cax = plt.gcf().axes[-1]
cax.tick_params(labelsize=15) # colorbar 刻度字体大小# fig.savefig("heatmap.pdf", bbox_inches='tight')
plt.show()


另一方面,Heatmap 中的刻度线很长,不好看。所以可以调整刻度线的位置(内、外侧)以及四个方向边是否显示刻度线:

fig = plt.figure()
# cmap='RdBu_r'
sns_plot = sns.heatmap(R, cmap='YlGnBu', xticklabels=8, yticklabels=8)
# tick_params 中 direction='in'表示刻度线位于内侧,另外还有参数 out,inout
sns_plot.tick_params(labelsize=15, direction='in')cax = plt.gcf().axes[-1]
# colorbar 中 top='off', bottom='off', left='off', right='off'表示上下左右侧的刻度线全部不显示
cax.tick_params(labelsize=15, direction='in', top='off', bottom='off', left='off', right='off')plt.show()

update:不显示坐标

# xticklabels =False
sns_plot = sns.heatmap(R, xticklabels =False)

调整索引值

最后,由于矩阵的原生索引 x,y∈{0,1,2,⋯,N−1}x,y \in \{0,1,2,\cdots,N-1\}x,y∈{0,1,2,⋯,N−1}。
如果要指定新的索引 {1,2,⋯,N}\{1,2,\cdots,N\}{1,2,⋯,N},可以利用 pandas 实现数据的包装整理。如下:

import numpy as np
from numpy import random
import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
sns.set()N = 16
R = random.randn(N, N)R = pd.DataFrame(R, columns=np.arange(1,N+1), index=np.arange(1,N+1))# fig, ax = plt.subplots(figsize=(12,9))
fig = plt.figure()
# cmap='RdBu_r'
sns_plot = sns.heatmap(R, cmap='YlGnBu', xticklabels=5, yticklabels=5)sns_plot.tick_params(labelsize=15, direction='in')cax = plt.gcf().axes[-1]
cax.tick_params(labelsize=15, direction='in', top='off', bottom='off', left='off', right='off')# fig.savefig("heatmap.pdf", bbox_inches='tight')
plt.show()


cmap 风格大全

cmap 的参数如下:


- Accent, Accent_r,
- Blues, Blues_r, BrBG, BrBG_r, BuGn, BuGn_r, BuPu, BuPu_r,
- CMRmap, CMRmap_r,
- Dark2, Dark2_r,
- GnBu, GnBu_r, Greens, Greens_r, Greys, Greys_r,
- OrRd, OrRd_r, Oranges, Oranges_r,
- PRGn, PRGn_r, Paired, Paired_r, Pastel1, Pastel1_r, Pastel2, Pastel2_r, PiYG, PiYG_r, PuBu, PuBuGn, PuBuGn_r, PuBu_r,   PuOr, PuOr_r, PuRd, PuRd_r, Purples, Purples_r,
- RdBu, RdBu_r, RdGy, RdGy_r, RdPu, RdPu_r, RdYlBu, RdYlBu_r, RdYlGn, RdYlGn_r, Reds, Reds_r,
- Set1, Set1_r, Set2, Set2_r, Set3, Set3_r, Spectral, Spectral_r,
- Wistia, Wistia_r,
- YlGn, YlGnBu, YlGnBu_r, YlGn_r, YlOrBr, YlOrBr_r, YlOrRd, YlOrRd_r,
- afmhot, afmhot_r, autumn, autumn_r,
- binary, binary_r, bone, bone_r, brg, brg_r, bwr, bwr_r,
- cividis, cividis_r, cool, cool_r, coolwarm, coolwarm_r, copper, copper_r, cubehelix, cubehelix_r,
- flag, flag_r,
- gist_earth, gist_earth_r, gist_gray, gist_gray_r, gist_heat, gist_heat_r, gist_ncar, gist_ncar_r, gist_rainbow, gist_rainbow_r, gist_stern, gist_stern_r, gist_yarg, gist_yarg_r, gnuplot, gnuplot2, gnuplot2_r, gnuplot_r, gray, gray_r,
- hot, hot_r, hsv, hsv_r,
- icefire, icefire_r, inferno, inferno_r,
- jet, jet_r,
- magma, magma_r, mako, mako_r,
- nipy_spectral, nipy_spectral_r,
- ocean, ocean_r,
- pink, pink_r, plasma, plasma_r, prism, prism_r,
- rainbow, rainbow_r, rocket, rocket_r,
- seismic, seismic_r, spring, spring_r, summer, summer_r,
- tab10, tab10_r, tab20, tab20_r, tab20b, tab20b_r, tab20c, tab20c_r, terrain, terrain_r, twilight, twilight_r, twilight_shifted, twilight_shifted_r,
- viridis, viridis_r, vlag, vlag_r,
- winter, winter_r


参考:https://matplotlib.org/examples/color/colormaps_reference.html

python 作图:heatmap相关推荐

  1. 不用第三方库,也能用 Python 作图,效果还不错

    一提到用 Python 作图,很多人第一个想到的库肯定是 Matplotlib ,功能强大,但是相应地安装所需要的依赖就多.有些开发者在自己的工作流中有简单作图的需求,但是又不希望引入依赖关系复杂的 ...

  2. python seaborn heatmap可视化相关性矩阵

    python seaborn heatmap可视化相关性矩阵 方法 方法 import pandas as pd import numpy as np import seaborn as sns df ...

  3. python作图颜色_python作图颜色

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 总结今天下午收获颇丰,忘记了吃饭,忘记了打游戏,一直在学习python作图. 学 ...

  4. python作图之plt.contour详解

    plt.contour是python中用于画等高线的函数,这里介绍一下plt.contour的使用. 文章目录 使用示例 plt.contour()函数本身 plt.contour()图中的坐标 叮! ...

  5. Python作图颜色汇总

    参考链接 Python 画图常用颜色 - 单色.渐变色.混色 - 够用 - CSDN Named colors in matplotlib - StackOverflow python中matplot ...

  6. 一文了解python作图(matplotlib.pyplot)

    参考视频:为什么用 Matplotlib 视频总时长两个多小时,可以整体看一遍,然后看这个就会很清楚 文章目录 1. 基本用法 1.1 基础作图 1.2 figure图像 1.3 设置坐标轴 1.3. ...

  7. python作图一览

    文章目录 m*n m*n simple_plot/histogram/scatter/pie m*n不全画 画两条线 修改装饰项 添加注释 直方图 直方图加概率密度函数图像 散点图 更改marker样 ...

  8. python作图——线型图,饼形图

    线性二维图 import numpy as np import matplotlib.pyplot as plt plt.figure() x=np.linspace(0,2*np.pi,50) y= ...

  9. python作图设置背景颜色_如何在matplotlib中设置绘图的外部背景颜色

    敬礼 我想更改matplotlib中绘图的外部颜色.我可以找到很多很多例子,如何改变内部背景颜色,但外部背景颜色拒绝改变.在 图像的白色部分就是我所说的"外部"背景.最外面的颜色只 ...

最新文章

  1. Python培训讲解二叉树的三种深度
  2. python批量重命名指定目录下所有文件的后缀名
  3. (0017)iOS 开发之Mac上安装Eclipse、创建java后台程序访问本地数据库
  4. python 数据可视化 -- 读取数据
  5. PHP Extension Makefile 製作
  6. 如何在Membership中实现修改密码的功能
  7. 如何做一场高质量的分享
  8. bootstrap评分插件 Bootstrap Star Rating Examples
  9. linux充当防火墙,Linux下主机充当防火墙的巧妙应用之iptables!.doc
  10. 隔一段时间查找一次 golang_剑指 offer-04 二维数组中的查找
  11. JAVA回形数的实现
  12. linux awk使用详解
  13. Linux——常用文件管理命令(必会)
  14. 全局唯一标识符 (GUID)
  15. 转载:机器人工程师学习计划(YY硕)
  16. html复选框变蓝,更改html复选框的背景颜色
  17. js计算时间差(天、小时、分钟、秒)(日期计算)
  18. 国内做三维GIS的公司总结-cesium和threejs
  19. 利用N2N内网穿透,并实现直连
  20. react中使用lazy函数进行路由懒加载

热门文章

  1. php-fpm服务启动命令,PHP-fpm服务的启动和停止
  2. [学习笔记]省选(算法?数据结构?)·线性基
  3. 我用数据告诉你,哪个省才是高考地狱模式?
  4. 网易我的世界手机版服务器文件在哪个文件夹,网易我的世界手机版怎么导入地图...
  5. DES_3DES_AES_IDES_RSA密码算法比较
  6. 大类资产配置(三)市场择时能力模型T-M
  7. LaTex 数学之矩阵
  8. bat打开网页10秒后关闭
  9. GIS——地图比例尺
  10. JDK 8 - computeIfAbsent,computeIfPresent,compute