暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Python绘图|pairplot图进阶

4277
点击关注了解更多哦

前期介绍了如何利用R语言与Python绘制pairsplot图可点击链接查看)。由于pairplot图在RPython中形式不同,有人喜欢在R中追求Python绘图风格,有人喜欢在Python中追求R的绘图风格。因此本文在上期的基础上,进一步利用Python展示如何绘制形式更加丰富的pairplot图。本文使用Jupyter Notebook作为运行环境。

1、数据准备

使用常见的iris数据集。

#加载库
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
from scipy.stats import pearsonr

#读入数据
iris = pd.read_csv("iris.csv")
iris = iris.iloc[:,0:4]
iris.head()

2、基本图形

sns.pairplot(iris);

3、定义函数

定义对角线函数

def diagfunc(x, **kws):
  ax = plt.gca()
  ax.annotate(x.name, xy=(0.2, 0.5),size = 12, xycoords=ax.transAxes)

定义相关性系数及p值函数

def reg_coef(x,y,label = None, color = None, **kwargs):
    ax = plt.gca()
    #ax.figure.set_size_inches(8, 8)
    r,p = pearsonr(x,y)
    ax.annotate('Corr :{:.3f}'.format(r), xy=(0.5,0.5), xycoords='axes fraction', ha='center')
    ax.annotate('P_value :{:.3f}'.format(p), xy=(0.5,0.4), xycoords='axes fraction', ha='center')
    ax.set_axis_off()

4、不同样式pairplot

样式1

g = sns.PairGrid(iris)
g.map_diag(sns.histplot) #diagonal 
g.map_lower(sns.regplot) #Lower
g.map_upper(reg_coef) #Upper 

样式2

g = sns.PairGrid(iris)
g.map_diag(diagfunc)
g.map_offdiag(sns.scatterplot)
g.set(ylabel=None, xlabel=None) 

样式3

g = sns.PairGrid(iris)
g.map_diag(diagfunc)
g.map_lower(sns.regplot) #Lower
g.map_upper(sns.kdeplot) #Upper 
g.set(ylabel=None, xlabel=None) 

样式4

g = sns.PairGrid(iris)
g.map_diag(diagfunc)
g.map_lower(sns.regplot) #Lower
g.map_upper(reg_coef) #Upper 
g.set(ylabel=None, xlabel=None) 

5、修改图形元素

修改图形颜色、大小等要素,以及图形保存。

g = sns.PairGrid(iris)
g.figure.set_size_inches(10, 10) #大小设置
g.map_diag(diagfunc)
g.map_lower(sns.scatterplot,s =25, color = "blue"#Lower
g.map_upper(sns.kdeplot, cmap = "Spectral_r"#Upper 
g.set(ylabel=None, xlabel=None) 
g.fig.savefig("seabon1.pdf");

绘制形式丰富的pairplot图,其核心要点在对于上三角、下三角以及对角线图形的控制。此外,关于如何修改每一个子图的颜色,可参考Stack Overflow[1]上的一个不错的回答。

6、其他

关于pairplot绘图的更多细节可在seaborn官网[2]进行查看。关于pairplotR语言Python绘图可进一步阅读R语言与Python绘制pairsplot,以及R语言绘图|散点图矩阵

参考资料

[1]

seaborn.pairplot() changing the color of each graph: https://stackoverflow.com/questions/59631092/seaborn-pairplot-changing-the-color-of-each-graph

[2]

seaborn.pairplot: https://seaborn.pydata.org/generated/seaborn.pairplot.html?highlight=pairplot#seaborn.pairplot,


文章转载自日常分享的小懒猫,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论