zoukankan      html  css  js  c++  java
  • 数据可视化 seaborn绘图(2)

    统计关系可视化

    最常用的关系可视化的函数是relplot

    seaborn.relplot(x=Noney=Nonehue=Nonesize=Nonestyle=Nonedata=Nonerow=Nonecol=Nonecol_wrap=Nonerow_order=Nonecol_order=Nonepalette=Nonehue_order=Nonehue_norm=Nonesizes=Nonesize_order=Nonesize_norm=Nonemarkers=Nonedashes=Nonestyle_order=Nonelegend='brief'kind='scatter'height=5aspect=1facet_kws=None**kwargs)

    Figure-level interface for drawing relational plots onto a FacetGrid.

    详细的api解释在此

    replot通过参数颜色/色调(hue),大小(size)和形状/风格(style)可以额外表达三个变量的信息.

    1. 散点图scatter plot
    2. 线图line plot

    当数据类型都是numberic的时候,最常用的是scatterplot().

    relplot的默认kind是‘scatter’,代表scatterplot。

    import seaborn as sns
    sns.set()
    tips = sns.load_dataset("tips")

    我们加载tips这个数据集.这是一个描述了客户用餐及小费的数据集.

    下面简要的看一下这个数据集前几行.

    tips = sns.load_dataset("tips")
    sns.relplot(x="total_bill", y="tip", data=tips);

    这时候可以看到我们绘制出了total_bill,tip两种数据的散点图.

    现在我们想再在图上添加这个就餐的顾客抽不抽烟.我们可以

    sns.relplot(x="total_bill", y="tip", hue="smoker", data=tips);

    为了进一步增加辨识度,可以进一步改进如下:

    sns.relplot(x="total_bill", y="tip",hue="smoker",style="smoker",data=tips);

    此时,颜色和形状表达的都是是否为smoker这一信息.

    你也可以用hue和style分别表示不同的信息.

    sns.relplot(x="total_bill", y="tip", hue="smoker", style="time", data=tips);

    此时,既有蓝色的圆(顾客抽烟,吃的午饭),也有黄色的圆(顾客不抽烟,吃的午饭).蓝色的×(顾客抽烟,吃的晚饭),黄色的×(顾客不抽烟,吃的晚饭).

    上面的图hue=‘smoker’.smoker是一个分类变量(categorical),当hue=‘size’时,size是一个numeric变量.着色方案会更改.

    sns.relplot(x="total_bill", y="tip", hue="size", data=tips);

    你可以定制化自己的着色方案.

    sns.relplot(x="total_bill", y="tip", hue="size", palette="ch:r=-.5,l=.75", data=tips);

    size参数可以改变大小.

    下面讲线图

    有的数据集,你可能想探索一下连续变量的变化情况.这时候线图就派上用场了.

    你可以用lineplot()或者relplot(kind='line')

    df = pd.DataFrame(dict(time=np.arange(500),
                           value=np.random.randn(500).cumsum()))

    看一下这个数据集,time是递增的time,value是浮点数.

    对于x变量的相同值,更复杂的数据集将具有多个测量值。seaborn中的默认行为是通过绘制均值和围绕均值的95%置信区间来聚合每个x值上的多个测量值:

    fmri = sns.load_dataset("fmri")
    sns.relplot(x="timepoint", y="signal", kind="line", data=fmri);

    可以通过ci参数控制是否绘制这个区间,因为大数据集下区间的绘制比较耗时.

    sns.relplot(x="timepoint", y="signal", kind="line", ci="sd", data=fmri);
    sns.relplot(x="timepoint", y="signal", kind="line", ci=None, data=fmri);

    类似于点图,也可以利用颜色,形状之类的参数来表达变量信息.

    sns.relplot(x="timepoint", y="signal", hue="region", style="event",
    dashes=True, markers=True, kind="line", data=fmri);

    用facets表达多变量之间的关系

    relplot()是基于FacetGrid的,所以很容易做到这一点.那么,你可以在多个轴上绘制数据集.

    比如对tips数据集,time的值有Lunch和Dinner。之前我们是用hue/style来表示这个信息的.现在我们可以这么做:

    sns.relplot(x="total_bill", y="tip", hue="smoker",
                col="time", data=tips);

    从更多的facet绘制数据:

    sns.relplot(x="timepoint", y="signal", hue="subject",
                col="region", row="event", height=3,
                kind="line", estimator=None, data=fmri);

    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'"));

    col_wrap表示一行展示几个图.

    
    
    
  • 相关阅读:
    php----爬虫(爬取豆瓣演员信息,搜索页)遇到的问题
    python-写爬虫时遇到的问题 TimeoutError: [WinError 10060]
    聚沙成塔
    买手机,继续纠结中
    问题不绕弯,死磕
    死磕,死磕死磕
    学而不践则罔
    越是忙的时候,兴趣越多
    周末小总结
    幸福和需求
  • 原文地址:https://www.cnblogs.com/sdu20112013/p/10078385.html
Copyright © 2011-2022 走看看