Python中seaborn如何绘制矩阵图
导读:本文共4977.5字符,通常情况下阅读需要17分钟。同时您也可以点击右侧朗读,来听本文内容。按键盘←(左) →(右) 方向键可以翻页。
摘要: 本文内容速览1、绘图数据准备还是使用鸢尾花iris数据集#导入本帖要用到的库,声明如下:importmatplotlib.pyplotaspltimportnumpyasnpimportpandasaspdfrompandasimportSeries,DataFramefromsklearnimportdatasetsimportseabornass... ...
目录
(为您整理了一些要点),点击可以直达。本文内容速览
1、绘图数据准备
还是使用鸢尾花iris数据集
#导入本帖要用到的库,声明如下:importmatplotlib.pyplotaspltimportnumpyasnpimportpandasaspdfrompandasimportSeries,DataFramefromsklearnimportdatasetsimportseabornassns#导入鸢尾花iris数据集(方法一)#该方法更有助于理解数据集iris=datasets.load_iris()x,y=iris.data,iris.targety_1=np.array(['setosa'ifi==0else'versicolor'ifi==1else'virginica'foriiny])pd_iris=pd.DataFrame(np.hstack((x,y_1.reshape(150,1))),columns=['sepallength(cm)','sepalwidth(cm)','petallength(cm)','petalwidth(cm)','class'])#astype修改pd_iris中数据类型object为float64pd_iris['sepallength(cm)']=pd_iris['sepallength(cm)'].astype('float64')pd_iris['sepalwidth(cm)']=pd_iris['sepalwidth(cm)'].astype('float64')pd_iris['petallength(cm)']=pd_iris['petallength(cm)'].astype('float64')pd_iris['petalwidth(cm)']=pd_iris['petalwidth(cm)'].astype('float64')#导入鸢尾花iris数据集(方法二)#importseabornassns#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调色盘
importpalettableg=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轴方向选取相同子集
importpalettableg=sns.pairplot(pd_iris,hue='class',palette=palettable.cartocolors.qualitative.Bold_9.mpl_colors,vars=['sepallength(cm)','sepalwidth(cm)'],#x,y轴方向选取相同子集绘图)sns.set(style='whitegrid')g.fig.set_size_inches(12,6)sns.set(style='whitegrid',font_scale=1.5)
x,y轴方向选取不同子集
importpalettableg=sns.pairplot(pd_iris,hue='class',palette=palettable.cartocolors.qualitative.Bold_9.mpl_colors,x_vars=['sepallength(cm)','sepalwidth(cm)'],#x,y轴方向选取不同子集y_vars=['petallength(cm)','petalwidth(cm)'],)sns.set(style='whitegrid')g.fig.set_size_inches(12,6)sns.set(style='whitegrid',font_scale=1.5)
非对角线散点图加趋势线
importpalettableg=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。
importpalettableg=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)
只显示网格下三角图形
importpalettableg=sns.pairplot(pd_iris,hue='class',palette='Set1',corner=True#图形显示左下角)g.fig.set_size_inches(12,12)sns.set(font_scale=1.5)
图形外观设置
importpalettableg=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)
</div> <div class="zixun-tj-product adv-bottom"></div> </div> </div> <div class="prve-next-news">
Python中seaborn如何绘制矩阵图的详细内容,希望对您有所帮助,信息来源于网络。