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表示一行展示几个图.

    
    
    
  • 相关阅读:
    hdu 1290 献给杭电五十周年校庆的礼物 (DP)
    hdu 3123 GCC (数学)
    hdu 1207 汉诺塔II (DP)
    hdu 1267 下沙的沙子有几粒? (DP)
    hdu 1249 三角形 (DP)
    hdu 2132 An easy problem (递推)
    hdu 2139 Calculate the formula (递推)
    hdu 1284 钱币兑换问题 (DP)
    hdu 4151 The Special Number (DP)
    hdu 1143 Tri Tiling (DP)
  • 原文地址:https://www.cnblogs.com/sdu20112013/p/10078385.html
Copyright © 2011-2022 走看看