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 判断一个进程是否存在
Apr 09 Python
python利用dir函数查看类中所有成员函数示例代码
Sep 08 Python
Python基于列表模拟堆栈和队列功能示例
Jan 05 Python
python实现学生管理系统
Jan 11 Python
Django学习笔记之ORM基础教程
Mar 27 Python
python requests post多层字典的方法
Dec 27 Python
python 将字符串中的数字相加求和的实现
Jul 18 Python
Django框架下静态模板的继承操作示例
Nov 08 Python
Python turtle库绘制菱形的3种方式小结
Nov 23 Python
python中sympy库求常微分方程的用法
Apr 28 Python
python小程序之4名牌手洗牌发牌问题解析
May 15 Python
使用Python Tkinter实现剪刀石头布小游戏功能
Oct 23 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
php xml 入门学习资料
2011/01/01 PHP
浅析php工厂模式
2014/11/25 PHP
Yii实现简单分页的方法
2016/04/29 PHP
php版微信公众平台接口开发之智能回复开发教程
2016/09/22 PHP
Laravel接收前端ajax传来的数据的实例代码
2017/07/20 PHP
PHP实现绘制二叉树图形显示功能详解【包括二叉搜索树、平衡树及红黑树】
2017/11/16 PHP
thinkphp5 URL和路由的功能详解与实例
2017/12/26 PHP
多广告投放代码 推荐
2006/11/13 Javascript
js弹出层之1:JQuery.Boxy (二)
2011/10/06 Javascript
5个javascript的数字格式化函数分享
2011/12/07 Javascript
jquery实现textarea输入字符控制(仿微博输入控制字符)
2013/04/26 Javascript
jQuery实现单行文字间歇向上滚动源代码
2013/06/02 Javascript
原生Js实现元素渐隐/渐现(原理为修改元素的css透明度)
2013/06/24 Javascript
javascript浏览器兼容教程之事件处理
2014/06/09 Javascript
浅谈JavaScript中的作用域和闭包问题
2015/07/07 Javascript
详解WordPress开发中get_current_screen()函数的使用
2016/01/11 Javascript
jQuery基于ajax操作json数据简单示例
2017/01/05 Javascript
JS简单判断函数是否存在的方法
2017/02/13 Javascript
全面解析vue中的数据双向绑定
2017/05/10 Javascript
详解React Native顶|底部导航使用小技巧
2017/09/14 Javascript
Vue组件开发技巧总结
2018/03/04 Javascript
NodeJS实现不可逆加密与密码密文保存的方法
2018/03/16 NodeJs
vue中根据时间戳判断对应的时间(今天 昨天 前天)
2019/12/20 Javascript
jQuery实现放大镜案例
2020/10/19 jQuery
浅析微信小程序自定义日历组件及flex布局最后一行对齐问题
2020/10/29 Javascript
python操作mysql中文显示乱码的解决方法
2014/10/11 Python
深入讲解Python中的迭代器和生成器
2015/10/26 Python
Python通过DOM和SAX方式解析XML的应用实例分享
2015/11/16 Python
Python获取昨天、今天、明天开始、结束时间戳的方法
2018/06/01 Python
python 使用pygame工具包实现贪吃蛇游戏(多彩版)
2019/10/30 Python
Omio西班牙:全欧洲低价大巴、火车和航班搜索和比价
2017/02/11 全球购物
人力资源经理的岗位职责范本
2014/02/28 职场文书
委托公证书样本
2015/01/23 职场文书
北京故宫的导游词
2015/01/31 职场文书
React 高阶组件HOC用法归纳
2021/06/13 Javascript
SpringBoot+VUE实现数据表格的实战
2021/08/02 Java/Android