矩阵图即用一张图绘制多个变量之间的关系,数据挖掘中常用于初期数据探索
本文介绍python中seaborn.pairplot(傻瓜版)和seaborn.PairGrid(更个性化版)绘制矩阵图

本文内容速览

欢迎随缘关注@pythonic生物人

目录

1、绘图数据准备
2、seaborn.pairplot加上分类变量修改调色盘x,y轴方向选取相同子集 x,y轴方向选取不同子集非对角线散点图加趋势线 对角线上的四个图绘制方式只显示网格下三角图形 图形外观设置
3、seaborn.PairGrid(更灵活的绘制矩阵图)每个子图绘制同类型的图对角线和非对角线分别绘制不同类型图对角线上方、对角线、对角线下方分别绘制不同类型图其它一些参数修改


1、绘图数据准备

还是使用鸢尾花iris数据集

#导入本帖要用到的库,声明如下:
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
from pandas import Series,DataFrame
from sklearn import datasets
import seaborn as sns#导入鸢尾花iris数据集(方法一)
#该方法更有助于理解数据集
iris=datasets.load_iris()
x, y =iris.data,iris.target
y_1 = np.array(['setosa' if i==0 else 'versicolor' if i==1 else 'virginica' for i in y])
pd_iris = pd.DataFrame(np.hstack((x, y_1.reshape(150,1))),columns=['sepal length(cm)','sepal width(cm)','petal length(cm)','petal width(cm)','class'])#astype修改pd_iris中数据类型object为float64
pd_iris['sepal length(cm)']=pd_iris['sepal length(cm)'].astype('float64')
pd_iris['sepal width(cm)']=pd_iris['sepal width(cm)'].astype('float64')
pd_iris['petal length(cm)']=pd_iris['petal length(cm)'].astype('float64')
pd_iris['petal width(cm)']=pd_iris['petal width(cm)'].astype('float64')#导入鸢尾花iris数据集(方法二)
#import seaborn as sns
#iris_sns = sns.load_dataset("iris")

数据集简单统计


2、seaborn.pairplot

语法:seaborn.pairplot(data, hue=None, hue_order=None, palette=None, vars=None, x_vars=None, y_vars=None, kind='scatter', diag_kind='auto', markers=None, height=2.5, aspect=1, corner=False, dropna=True, plot_kws=None, diag_kws=None, grid_kws=None, size=None)

g = sns.pairplot(pd_iris)
g.fig.set_size_inches(12,12)#figure大小
sns.set(style='whitegrid',font_scale=1.5)#文本大小

对角线4张图是变量自身的分布直方图;非对角线的 12 张就是某个变量和另一个变量的关系。

  • 加上分类变量
g = sns.pairplot(pd_iris,hue='class'#按照三种花分类)
sns.set(style='whitegrid')
g.fig.set_size_inches(12,12)
sns.set(style='whitegrid',font_scale=1.5)

  • 修改调色盘

可以使用Matplotlib、seaborn、颜色号list等色盘。可参考:python调色盘

import palettable
g = sns.pairplot(pd_iris,hue='class',palette=palettable.cartocolors.qualitative.Bold_9.mpl_colors,#palettable颜色盘)
sns.set(style='whitegrid')
g.fig.set_size_inches(12,12)
sns.set(style='whitegrid',font_scale=1.5)

g = sns.pairplot(pd_iris,hue='class',palette='Set1',#Matplotlib颜色)
sns.set(style='whitegrid')
g.fig.set_size_inches(12,12)
sns.set(style='whitegrid',font_scale=1.5)

g = sns.pairplot(pd_iris,hue='class',palette=['#dc2624', '#2b4750', '#45a0a2'],#使用传入的颜色list)
sns.set(style='whitegrid')
g.fig.set_size_inches(12,12)
sns.set(style='whitegrid',font_scale=1.5)

  • x,y轴方向选取相同子集
import palettable
g = sns.pairplot(pd_iris,hue='class',palette=palettable.cartocolors.qualitative.Bold_9.mpl_colors,vars=['sepal length(cm)','sepal width(cm)'],#x,y轴方向选取相同子集绘图)
sns.set(style='whitegrid')
g.fig.set_size_inches(12,6)
sns.set(style='whitegrid',font_scale=1.5)

  • x,y轴方向选取不同子集
import palettable
g = sns.pairplot(pd_iris,hue='class',palette=palettable.cartocolors.qualitative.Bold_9.mpl_colors,x_vars=['sepal length(cm)','sepal width(cm)'],#x,y轴方向选取不同子集y_vars=['petal length(cm)','petal width(cm)'],)
sns.set(style='whitegrid')
g.fig.set_size_inches(12,6)
sns.set(style='whitegrid',font_scale=1.5)

  • 非对角线散点图加趋势线
import palettable
g = sns.pairplot(pd_iris,hue='class',palette=palettable.cartocolors.qualitative.Bold_9.mpl_colors,kind='reg',#默认为scatter,reg加上趋势线                 )
sns.set(style='whitegrid')
g.fig.set_size_inches(12,12)
sns.set(style='whitegrid',font_scale=1.5)

  • 对角线上的四个图绘制方式

可选参数为‘auto’, ‘hist’(默认), ‘kde’, None。

import palettable
g = sns.pairplot(pd_iris,hue='class',palette=palettable.cartocolors.qualitative.Bold_9.mpl_colors,diag_kind='hist',#hist直方图               )
sns.set(style='whitegrid')
g.fig.set_size_inches(12,12)
sns.set(style='whitegrid',font_scale=1.5)

  • 只显示网格下三角图形
import palettable
g = sns.pairplot(pd_iris,hue='class',palette='Set1',corner=True#图形显示左下角)g.fig.set_size_inches(12,12)
sns.set(font_scale=1.5)

  • 图形外观设置
import palettable
g = sns.pairplot(pd_iris,hue='class',palette='Set1',markers=['$clubsuit,'.','+'],#散点图的markerplot_kws=dict(s=50, edgecolor="r", linewidth=1),#非对角线上的图marker大小、外框、外框线宽diag_kws=dict(shade=True)#对角线上核密度图是否填充)
g.fig.set_size_inches(12,12)
sns.set(font_scale=1.5)


3、seaborn.PairGrid(更灵活的绘制矩阵图)

seaborn.PairGrid(data, hue=None, hue_order=None, palette=None, hue_kws=None, vars=None, x_vars=None, y_vars=None, corner=False, diag_sharey=True, height=2.5, aspect=1, layout_pad=0, despine=True, dropna=True, size=None)

  • 每个子图绘制同类型的图
g = sns.PairGrid(pd_iris, hue='class',palette='husl',)
g = g.map(plt.scatter)#map每个子图绘制一样类型的图
g = g.add_legend()
g.fig.set_size_inches(12,12)
sns.set(style='whitegrid',font_scale=1.5)

  • 对角线和非对角线分别绘制不同类型图
g = sns.PairGrid(pd_iris, hue='class',palette='Set1',)
g = g.map_diag(plt.hist)#对角线绘制直方图
g = g.map_offdiag(plt.scatter)#非对角线绘制散点图
g = g.add_legend()
g.fig.set_size_inches(12,12)
sns.set(style='whitegrid',font_scale=1.5)

  • 对角线上方、对角线、对角线下方分别绘制不同类型图
g = sns.PairGrid(pd_iris, hue='class',)
g = g.map_upper(sns.scatterplot)
g = g.map_lower(sns.kdeplot, colors="C0")
g = g.map_diag(sns.kdeplot, lw=2)3绘制核密度图
g = g.add_legend()#添加图例
sns.set(style='whitegrid',font_scale=1.5)

  • 其它一些参数修改
g = sns.PairGrid(pd_iris, hue='class',palette='Set1',hue_kws={"marker": ["^", "s", "D"]},#设置markerdiag_sharey=False,)
g = g.map_upper(sns.scatterplot,edgecolor="w", s=40)#设置点大小,外框颜色
g = g.map_lower(sns.kdeplot, colors="#01a2d9")#设置下三角图形颜色
g = g.map_diag(sns.kdeplot, lw=3)#对角图形颜色
g = g.add_legend()#添加图例
g.fig.set_size_inches(12,12)
sns.set(style='whitegrid',font_scale=1.5)

参考资料:

http://seaborn.pydata.org/generated/seaborn.pairplot.html#seaborn.pairplothttp://seaborn.pydata.org/generated/seaborn.PairGrid.html#seaborn.PairGrid


本文结束,欢迎随缘关注@pythonic生物人

python 树状图可视化_Python可视化25|seaborn矩阵图相关推荐

  1. python树状图可视化_如何可视化(树状图)一个层次项目字典?

    这是我第一次用Python从字典格式的分层数据中进行可视化.数据的最后一部分如下所示:d = {^2820: [^391, ^1024], ^2821: [^759, 'w', ^118, ^51], ...

  2. python 树状图代码_Python 无限级分类树状结构生成算法 「实用代码」

    def generate_tree(source, parent): tree = [] for item in source: if item["parent"] == pare ...

  3. python树状节点 可拖拽_Python 的 heapq 模块源码分析

    原文链接:Python 的 heapq 模块源码分析 起步 heapq 模块实现了适用于Python列表的最小堆排序算法. 堆是一个树状的数据结构,其中的子节点都与父母排序顺序关系.因为堆排序中的树是 ...

  4. python 树状数组_【算法日积月累】19-高级数据结构:树状数组

    树状数组能解决的问题 树状数组,也称作"二叉索引树"(Binary Indexed Tree)或 Fenwick 树. 它可以高效地实现如下两个操作: 1.数组前缀和的查询: 2. ...

  5. python 树状数组_树状数组(Binary Indexed Tree) 总结

    1."树状数组"数据结构的一种应用 对含有n个元素的数组(a[1],...,a[k],...,a[n]): (1)求出第i个到第j个元素的和,sum=a[i]+...+a[j]. ...

  6. python台风动图绘制_python可视化绘图:台风路径可视化

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章来源于好奇心Log ,作者洋流 台风是重大灾害性天气,台风引起的直接灾害通 ...

  7. python 热图颜色_Python可视化matplotlibseborn14-热图heatmap

    热力图(heatmap)可通过颜色深浅变化,优雅的展示数据的差异. 详细介绍python seaborn绘制热图 本文速览Matplotlib热图heatmapseaborn热图1seaborn热图2 ...

  8. python excel 饼图 简书_Python可视化29_matplotlib-饼图(pie)

    本文详细介绍python 使用matplotlib.pyplot.pie绘制饼图(pie) 本文快速预览 更多好文,欢迎随缘关注@ image image 目录 默认参数 修改配色 饼图某部分突出or ...

  9. python用matplotlib画玫瑰_Python可视化:用Matplotlib画个玫瑰图

    emmmm,差不多 差不多就行,哈哈哈 100%还原太麻烦了 文字的和其他的修饰,作者实在嫌麻烦,有兴趣的朋友,可以自己尝试一下 下面进入教学时间,大家鼓掌 1.什么是玫瑰图 玫瑰图,玫瑰图,就是长得 ...

最新文章

  1. 从开发到上线,一个人的两周产品研发之旅
  2. VMware10.0中安装CentOS8时提示客户机操作系统已禁用CPU,请关闭或重置虚拟机
  3. Spring Boot2.1.5(8)--- 各Starter介绍
  4. 数字电路与微型计算机原理,电子科技大学1999年考研真题-微机原理与数字电路...
  5. [经典控件]按钮和菜单
  6. OpenCV像素二位数组数据(矩阵)生成图片
  7. redis缓存队列+MySQL +php任务脚本定时批量入库
  8. pytorch新手需要注意的隐晦操作Tensor,max,gather
  9. android抓取微信朋友圈,一种快速提取Android微信朋友圈数据的方法
  10. 为村上隆直播做同传的火山翻译:成立仅3年,拿下5项世界冠军
  11. 小米5-root-记录
  12. Ubuntu 18.04.1 LTS 安装网易云音乐,告别图标无法点击
  13. jQuery(简介、特点、使用方法、【重点】jQuery的选择器:是jQuery的灵魂、jQuery的属性:操作标签的属性)
  14. 中国宠物用品品牌“Touchdog它它”完成数千万元Pre-A 轮融资
  15. GSM与N-CDMA网络覆盖能力对比研究(转)
  16. CCNA实验之---路由器密码的恢复
  17. 个人对latch的一些个理解
  18. 共享计算机后防火墙能开启,360防火墙在哪里设置 如何打开或关闭【图解】
  19. 【计网面经】HTTP
  20. 91.91p06xcm71xyz./index.php?,http://email.91dizhi.at.gmail.com.e9p.work/php

热门文章

  1. KNN识别手写体数字
  2. 通过HttpListener实现简单的Http服务
  3. OO开发思想:面向对象的开发方法(Object oriented,OO)
  4. SUN JAVA面试笔试题2
  5. html底部自动加载下一页,js页面滚动到底部时自动加载下一页数据
  6. java 数据库工厂_月光软件站 - 编程文档 - Java - 简单的数据库连接工厂实现
  7. MySQL锁的用法之行级锁
  8. MySQL配置mycat读写分离:wrapper | Startup failed: Timed out waiting for signal from JVM.
  9. Linux的Apache报错(20014)Internal error: Error retrieving pid file logs/httpd.pid
  10. mysql生产环境运维方案_[MySQL生产环境] Innodb存储引擎内存报警问题处理过程