千家信息网

Python中seaborn如何绘制矩阵图

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,这篇文章主要介绍了Python中seaborn如何绘制矩阵图,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。本文内容速览1、绘图数据准备
千家信息网最后更新 2026年10月31日Python中seaborn如何绘制矩阵图

这篇文章主要介绍了Python中seaborn如何绘制矩阵图,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

本文内容速览

1、绘图数据准备

还是使用鸢尾花iris数据集

#导入本帖要用到的库,声明如下:import matplotlib.pyplot as pltimport numpy as npimport pandas as pdfrom pandas import Series,DataFramefrom sklearn import datasetsimport seaborn as sns #导入鸢尾花iris数据集(方法一)#该方法更有助于理解数据集iris=datasets.load_iris()x, y =iris.data,iris.targety_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为float64pd_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可视化学习之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)

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 palettableg = 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 palettableg = 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 palettableg = 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 palettableg = 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 palettableg = sns.pairplot(pd_iris,                 hue='class',                 palette='Set1',                 corner=True#图形显示左下角                                ) g.fig.set_size_inches(12,12)sns.set(font_scale=1.5)

图形外观设置

import palettableg = 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)

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"]},#设置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如何绘制矩阵图"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!

对角 对角线 数据 颜色 图形 类型 不同 变量 大小 子集 方向 篇文章 矩阵 方法 直方图 鸢尾 鸢尾花 相同 个子 参数 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技公司排名 互联网科技工作委员会主任 互联网通讯科技 互联网巨头科技公司 互联网 科技 互联网金融科技委员会 左右互联网络科技 济南华为互联网科技产业总部基地 阿里巴巴算科技企业还是互联网 银川新华互联网科技职业技术培训学校图片 厦门比较好的科技互联网公司 互联网科技公司有风险吗 坤平互联网科技 山东星卡互联网科技有限公司官网 风投北京互联网科技 湖北辰鑫科技互联网 互联网对科技影响 河南商务圈互联网科技有限公司 黑龙江互联网科技公司 重庆科技产业互联网有哪些 华宇互联网科技 天扬科技互联网广告 美国互联网前沿科技 山东有哪些互联网科技公司 国大互联网教育科技有限公司薪资 合肥互联网科技公司公章图片 每天都有哪些好的互联网科技 半导体行业属于互联网高科技类吗 易租星互联网科技有限公司 北京品多多互联网科技有限公司
0