前期介绍了如何利用R语言与Python绘制pairsplot图(可点击链接查看)。由于pairplot图在R与Python中形式不同,有人喜欢在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]进行查看。关于pairplot的R语言及Python绘图可进一步阅读R语言与Python绘制pairsplot,以及R语言绘图|散点图矩阵。
参考资料
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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。