Python可视化学习之seaborn绘制矩阵图详解


Posted in Python onFebruary 24, 2022

本文内容速览

Python可视化学习之seaborn绘制矩阵图详解

Python可视化学习之seaborn绘制矩阵图详解

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")

数据集简单统计

Python可视化学习之seaborn绘制矩阵图详解

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)#文本大小

Python可视化学习之seaborn绘制矩阵图详解

对角线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)

Python可视化学习之seaborn绘制矩阵图详解

修改调色盘

可以使用Matplotlib、seaborn、颜色号list等色盘。

可参考:Python可视化学习之seaborn调色盘

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)

Python可视化学习之seaborn绘制矩阵图详解

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)

Python可视化学习之seaborn绘制矩阵图详解

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)

Python可视化学习之seaborn绘制矩阵图详解

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)

Python可视化学习之seaborn绘制矩阵图详解

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)

Python可视化学习之seaborn绘制矩阵图详解

非对角线散点图加趋势线 

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)

Python可视化学习之seaborn绘制矩阵图详解

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

可选参数为‘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)

Python可视化学习之seaborn绘制矩阵图详解

只显示网格下三角图形 

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)

Python可视化学习之seaborn绘制矩阵图详解

图形外观设置 

import palettable
g = sns.pairplot(pd_iris,
                 hue='class',
                 palette='Set1',
                 markers=['$\clubsuit$','.','+'],#散点图的marker
                 plot_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)

Python可视化学习之seaborn绘制矩阵图详解

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)

Python可视化学习之seaborn绘制矩阵图详解

对角线和非对角线分别绘制不同类型图

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)

Python可视化学习之seaborn绘制矩阵图详解

对角线上方、对角线、对角线下方分别绘制不同类型图

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)

Python可视化学习之seaborn绘制矩阵图详解

其它一些参数修改

g = sns.PairGrid(pd_iris, hue='class',
                 palette='Set1',
                 hue_kws={"marker": ["^", "s", "D"]},#设置marker
                 diag_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)

Python可视化学习之seaborn绘制矩阵图详解

以上就是Python可视化学习之seaborn绘制矩阵图详解的详细内容,更多关于Python seaborn矩阵图的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
举例讲解Python的Tornado框架实现数据可视化的教程
May 02 Python
python返回昨天日期的方法
May 13 Python
Flask框架的学习指南之开发环境搭建
Nov 20 Python
Python 专题三 字符串的基础知识
Mar 19 Python
用十张图详解TensorFlow数据读取机制(附代码)
Feb 06 Python
基于python生成器封装的协程类
Mar 20 Python
pytorch 获取tensor维度信息示例
Jan 03 Python
Tensorflow 使用pb文件保存(恢复)模型计算图和参数实例详解
Feb 11 Python
python扫描线填充算法详解
Feb 19 Python
简单了解如何封装自己的Python包
Jul 08 Python
TensorFlow低版本代码自动升级为1.0版本
Feb 20 Python
pytorch交叉熵损失函数的weight参数的使用
May 24 Python
Python matplotlib可视化之绘制韦恩图
Python语言中的数据类型-序列
Feb 24 #Python
浅析python中特殊文件和特殊函数
Feb 24 #Python
Python中字符串对象语法分享
Feb 24 #Python
Python+Matplotlib+LaTeX玩转数学公式
Python语言内置数据类型
Feb 24 #Python
Python中的程序流程控制语句
Feb 24 #Python
You might like
Android ProgressBar进度条和ProgressDialog进度框的展示DEMO
2013/06/19 PHP
ThinkPHP模板自定义标签使用方法
2014/06/26 PHP
浅谈PHP解析URL函数parse_url和parse_str
2014/11/11 PHP
利用php输出不同的心形图案
2016/04/22 PHP
详解PHP字符串替换str_replace()函数四种用法
2017/10/13 PHP
javaScript对象和属性的创建方法
2007/01/15 Javascript
jquery学习笔记二 实现可编辑的表格
2010/04/09 Javascript
jquery.pagination.js 无刷新分页实现步骤分享
2012/05/23 Javascript
jQuery prev ~ siblings选择器使用介绍
2013/08/09 Javascript
判定是否原生方法的JS代码
2013/11/12 Javascript
jquery实现全屏滚动
2015/12/28 Javascript
jQuery动画效果相关方法实例分析
2015/12/31 Javascript
Angular.js与Bootstrap相结合实现表格分页代码
2016/04/12 Javascript
JavaScript数组合并的多种方法
2016/05/22 Javascript
layui前段框架日期控件使用方法详解
2017/05/19 Javascript
AngularJS解决ng-if中的ng-model值无效的问题
2017/06/21 Javascript
JavaScript中变量提升机制示例详解
2019/12/27 Javascript
JavaScript实现简易计算器小功能
2020/10/22 Javascript
[05:53]敌法师的金色冠名ID"BurNIng",是传说,是荣耀
2020/07/11 DOTA
解决Django模板无法使用perms变量问题的方法
2017/09/10 Python
Python实现定时备份mysql数据库并把备份数据库邮件发送
2018/03/08 Python
python实现windows下文件备份脚本
2018/05/27 Python
了解不常见但是实用的Python技巧
2019/05/23 Python
Python当中的array数组对象实例详解
2019/06/12 Python
超简单的Python HTTP服务
2019/07/22 Python
Tornado实现多进程/多线程的HTTP服务详解
2019/07/25 Python
Python 生成一个从0到n个数字的列表4种方法小结
2019/11/28 Python
python 实现查询Neo4j多节点的多层关系
2019/12/23 Python
详解CSS中iconfont的使用
2015/08/04 HTML / CSS
英国高端食品和葡萄酒超市:Waitrose
2016/08/23 全球购物
项目经理任命书范本
2014/06/05 职场文书
局机关干部群众路线个人对照检查材料思想汇报
2014/10/05 职场文书
领导干部整治奢华浪费之风思想汇报
2014/10/07 职场文书
Java中API的使用方法详情
2022/04/06 Java/Android
Python使用DFA算法过滤内容敏感词
2022/04/22 Python
apache ftpserver搭建ftp服务器
2022/05/20 Servers