Python可视化分析,python数据分布可视化
Python数据可视化seaborn (III) 3354探索变量之间的关系
我们经常想知道变量之间是否存在相关性,以及这些相关性是否受到其他变量的影响。可视化可以帮助我们非常直观地展示这些东西。
import numpy as NP import pandas as PD import matplotlib . py plot as pltimport seaborn as SNS % matplotlib inline import warnings warnings . filter warnings( igno Re )# don t warning SNS . set _ context( notebook ,font _ scale=1.2)tips=SNS . load _ dataset( tips )tips . head()total _ billtipsexsmokerdaytimesize 016 . 991 . 01 femalenosundiner 2110 . 341 . 66 malenosundinner 32
*seaborn.relplot(x=None,y=None,hue=None,size=None,style=None,data=None,row=None,col=None,col_wrap=None,row_order=None,palette=None,hue_order=None,hue_norm=None,size=None,size_norm=None,markers=None,破折号=None,style_order=None,legend=brief ,kind=scatter ,height=5,aspect=1,facet _ kws=
【色调、大小、样式】:可以生成不同的颜色、大小、样式独立显示第三个变量【row,col】:根据一个变量,可以分成几列(不能和参数行一起出现)。尺寸:为尺寸参数的每个分类设置尺寸。从变量到大小的字典映射包含最大和最小的元组。将规范化此范围内的值[列,行,大小,色调,样式]_order:指定变量出现的顺序。Hue_norm:当Hue的变量值为数值时,用于标准化colormap,如果是分类变量则无关紧要。Size_norm:数据单元的标准化,当大小变量为数字时缩放图像图例:如何绘制图例False:不绘制图例 brief (默认):数值色调和大小参数将使用均匀间隔的样本来表示 full :比较 brief ,每个组将输出一个条目facet_kws在图例中:字典散点图SNS.relplot (x= total _ bill ,y= tip ,data=tips,kind= scatter ,# [scatter , line] hue= day 。#设置颜色分类的第三个变量# style=day ,#设置形状分类调色板=husl ,s=60,#设置调色板类型和散布大小aspect=1.5,height=6 #设置图像大小和纵横比)![png](output_5_1.png
如你所见,小费和消费总体上呈线性正相关。如果精确到不同日期有什么区别?上图中的颜色虽然有区分,但是不够明显。
Seaborn可以将分类变量绘制到不同的子图中,如下图所示:
SNS.relplot (x= total _ bill ,y= tip ,data=tips,hue= time ,#按颜色对时间变量进行分类col=day ,#按日期变量进行分类col_wrap=2,#每行2个分类s=100,#散布大小(来自PLT
当然,你也可以用大小来表示变量的大小。
SNS.relplot (x= total _ bill ,y= tip ,data=tips,hue= time ,size= size ,palette=[b , r],size=(30,120),# size按最小值20
当然,可以将点设置为不同的形状来区分类别,但不建议单独用形状来表示一个变量,因为形状之间的区分并不明显,建议用颜色来表示。
sns.relplot(x=total_bill ,y=tip ,data=tips,hue=smoker ,style=smoker ,s=50)
颜色可以显示离散变量,连续变量,并自定义调色板。
sns.relplot(x=total_bill ,y=tip ,data=tips,hue=size ,palette=ch:r=-.5,l=.75 )
用line graph relpot绘制线图实际上是对lineplot()函数的一个访问,所以这里可以使用lineplot的所有参数。同样,散点图()函数的参数设置也和这个差不多。
*seaborn.lineplot(x=None,y=None,hue=None,size=None,style=None,data=None,palette=None,hue_order=None,hue_norm=None,size=None,size_order=None,size_norm=None,破折号=True,标记=None,style_order=None,units=None,estimator=mean ,ci=95,n_boot=1000,sort=True,err_style=band ,err_kws=None,legend=brief ,ax=None
单位:单独绘制变量的每个样本,但不绘制图例。可用于绘制重复数据。估计量:熊猫法的名字或无,这是一种聚合同一个x变量的多个观察值的方法。Ci: [int, SD ,none],置信区间的大小,以及标绘数据的标准差(当标绘数据为 SD 时)。N_boot: int,计算置信区间的bootstrap数sort: bool,数据会按照X和Y变量排序,否则点err _ style:“band”和“bars”会按照它们在数据集中的顺序排列,置信区间style fmri=SNS . load _ dataset( fmri )print(fmri . head())g=SNS . rel plot(X= time point ,y= signal ,data=fmri,hue= event ,style= event ,Col= region ,markers=true, 破折号=假,#添加标记,虚线类型=线被禁止)受试者时间点事件区域信号0 s13 18神经刺激顶骨-0.0175521 s5 14神经刺激顶骨-0.0808832 s12 18神经刺激顶骨-0.0810333 s11 18神经刺激顶骨-0.0461344 s10 18神经刺激顶骨-0.037970
Lineplot()默认会按数值对X排序,也可以禁止。对于一些复杂的数据集,比如上面的fmri数据集。同一个X将有多个测量值。Born的默认行为是通过绘制平均值和平均值周围的95%置信区间来聚合每个x的多个测量值。对于大数据可能需要很长时间才能画出置信区间,所以可以用ci=None来禁止。当然,你也可以用标准差CI= SD SNS代替置信区间。Relplot (x=时间点,y=信号,data=fmri,sort=false,#禁止排序X kind=line ,ci=False) #禁止置信区间。
要完全关闭聚合,可以设置estimator=None,但是当数据在每个点都有多个观测值时,可能会产生奇怪的效果。
sns.relplot(x=timepoint ,y=signal ,estimator=None,kind=line ,data=fmri)
有时候我们需要反复衡量和比较同一个问题。Seaborn也可以单独画。
sns.relplot(x=timepoint ,y=signal ,hue=region ,units=subject ,estimator=None,kind=line ,data=fmri.query(event==stim ))
折线图通常用于可视化与实际日期和时间相关的数据。这些函数将原始格式的数据传递给底层的matplotlib函数,因此它们可以利用matplotlib的能力来格式化刻度标签中的日期。但是所有的格式化都必须在matplotlib层完成。您可以参考matplotlib文档来了解它的工作原理:
fig=plt.figure(figsize=(8,6))df=pd。data frame(dict(time=PD . date _ range( 2017-1-1 ,periods=500),Value=np.random.randn (500)。Cumsum ()) g=SNS.relplot (x= time ,y= value ,kind= line ,data=df) g.fig.autofmt _ xdate () #当x轴为时间格式时
如果要检查变量多重分类的效果,最好是在列上分类。
sns.relplot(x=timepoint ,y=signal ,hue=event ,style=event ,col=subject ,col_wrap=5,height=3,aspect=.75,linewidth=2.5,kind=line ,data=fmri . query( region== frontal ))
在下一篇文章中,我们将讨论seaborn中线性关系的可视化。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。