3 分类变量的绘图

作者: readilen | 来源:发表于2018-03-24 13:08 被阅读122次

    散点图在分类变量中不能使用,本章将讨论分类变量的显示方法。seaborn将分类变量的显示函数分成了三类:每个级别分类变量的观察,观察变量的抽象表示,统计估计表示。

    • 第一类使用函数swarmplot和stripplot
    • 第二类使用boxplot和violinplot
    • 第三类使用countplot和pointplot

    分类变量的关联也有两种显示方式:

    • regplot和lmplot 的低级关联显示方式
    • factorplot和FacetGrid 高级关联显示方式

    首先导入库和数据

    import numpy as np
    import pandas as pd
    import matplotlib as mpl
    import matplotlib.pyplot as plt
    import seaborn as sns
    sns.set(style="whitegrid", color_codes=True)
    np.random.seed(sum(map(ord, "categorical")))
    titanic = sns.load_dataset("titanic")
    tips = sns.load_dataset("tips")
    iris = sns.load_dataset("iris")
    

    分类变量散点图

    显示分类变量的散点图,最简单的函数是stripplot

    sns.stripplot(x="day", y="total_bill", data=tips);
    
    stripplot

    我们发现每个分类中点都重合了,有点看不清楚,可以使用jitter来调整一下偏差

    sns.stripplot(x="day", y="total_bill", data=tips, jitter=True);
    
    jitter

    虽然散开了,但是由于比较密集,依然有重叠。swarmplot使用专用算法保证不重叠。

    sns.swarmplot(x='day', y='total_bill', data=tips)
    
    swarmplot

    点不拥堵在一起了,开枝散叶了,这时我么还可以加入另一个分类

    sns.swarmplot(x='day', y='total_bill', hue='sex', data=tips)
    
    hue

    分类变量分布图

    一般来说散点图提供的信息有限,有时候我们需要分类变量的分布图,提供不同分类之间总体信息的比较。

    箱线图

    箱线图给出了4分位的值,极值,中位数等信息,较好的描述了离散变量的信息

    sns.boxplot(x='day', y='total_bill', data=tips)
    
    boxplot
    琴音图

    有时候我们需要核密度分布图,violinplot是个选择

    sns.violinplot(x='day', y='total_bill', hue='sex', data=tips, split=True)
    
    violinplot

    swarmplot,violinplot,boxplot,stripplot个和函数可以混合使用

    sns.violinplot(x="day", y="total_bill", data=tips, inner=None)
    sns.swarmplot(x="day", y="total_bill", data=tips, color="w", alpha=.5);
    
    mix

    分类变量的统计估计

    除了显示分布,还可以显示中心趋势,seaborn有两个基本的API,barplot,countplot

    sns.barplot(x="sex", y="survived", hue="class", data=titanic)
    
    barplot
    sns.countplot(x="deck", data=titanic, palette="Greens_d");
    
    contplot

    多面板的分类变量图

    两种方法添加面板 factorplot或者|FacetGrid

    sns.factorplot(x="day", y="total_bill", hue="smoker",
                   col="time", data=tips, kind="swarm");
    
    factorplot
    sns.factorplot(x="time", y="total_bill", hue="smoker",
                   col="day", data=tips, kind="box", size=4, aspect=.5);
    
    factorplot
    g = sns.PairGrid(tips,
                     x_vars=["smoker", "time", "sex"],
                     y_vars=["total_bill", "tip"],
                     aspect=.75, size=3.5)
    g.map(sns.violinplot, palette="pastel");
    
    PairGrid

    相关文章

      网友评论

      • 25848dccfd9e:冒昧打扰一下,有没有用过kalman滤波预测呀?

      本文标题:3 分类变量的绘图

      本文链接:https://www.haomeiwen.com/subject/rvdqcftx.html