zoukankan      html  css  js  c++  java
  • seaborn线性关系数据可视化:时间线图|热图|结构化图表可视化

    一、线性关系数据可视化lmplot( )

    表示对所统计的数据做散点图,并拟合一个一元线性回归关系。

    lmplot(x, y, data, hue=None, col=None, row=None, palette=None,col_wrap=None, height=5, aspect=1,markers="o",

          sharex=True,sharey=True, hue_order=None, col_order=None,row_order=None,legend=True, legend_out=True,

              x_estimator=None, x_bins=None,x_ci="ci", scatter=True, fit_reg=True, ci=95, n_boot=1000,units=None, order=1,

              logistic=False, lowess=False, robust=False,logx=False, x_partial=None, y_partial=None, truncate=False,x_jitter=None,

              y_jitter=None, scatter_kws=None, line_kws=None, size=None)

    • x和y 表示显示x和y的线性关系
    • hue 表示对x按照hue进行分类,每个分类都在同一个图表显示
    • hue_order 按照hue分类后,多分类的结果进行筛选和显示排序
    • col和row 表示对hue的分类拆分为多个图表显示,或者对x按照col分类并拆分为多个横向的独立图表、或者对x按照row分类并拆分为多个竖直的独立图表
    • col_order和row_order 按照col和row分类拆分后,多分类进行删选和显示排序
    • col_wrap 每行显示的图表个数
    • height 每个图表的高度(最后一个参数size即height,size正被height替代)
    • aspect 每个图表的长宽比,默认为1即显示为正方形
    • marker 点的形式,
    • sharex和sharey 拆分为多个图表时是否共用x轴和y轴,默认共用
    • x_jitter和y_jitter 给x轴和y轴随机增加噪点
    #hue分类,col图表拆分
    sns.lmplot(x="tip", y="total_bill",data=tips,hue='smoker',palette="Set1",ci = 80, markers = ['+','o'])  #是否吸烟在同一个图表显示
    sns.lmplot(x="tip", y="total_bill",data=tips,hue='day',col='day',sharex=True,markers='.')  #按日期拆分为独立的图表

    sns.lmplot(x="tip", y="total_bill",data=tips,col='time',row='sex',height=3) #行拆分和列拆分

    二、时间线图lineplot()

    时间线图用lineplot()表示,tsplot()正在被替代。

    lineplot(x=None, y=None, hue=None, size=None, style=None, data=None, palette=None, hue_order=None, hue_norm=None,
                sizes=None, size_order=None, size_norm=None,dashes=True, markers=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, **kwargs)

    fmri = sns.load_dataset("fmri")
    ax = sns.lineplot(x="timepoint", y="signal", data=fmri)
    fmri.head()

       

    三、热图heatmap()

    热图只针对二维数据,用颜色的深浅表示大小,数值越小颜色越深。

    heatmap(data, vmin=None, vmax=None, cmap=None, center=None, robust=False,annot=None, fmt=".2g",
                  annot_kws=None,linewidths=0, linecolor="white",cbar=True, cbar_kws=None, cbar_ax=None,
                  square=False, xticklabels="auto", yticklabels="auto",mask=None, ax=None, **kwargs)

    • data 二维数据
    • vmin和vmax 调色板的最小值和最大值
    • annot 图中是否显示数值
    • fmt 格式化数值
    • linewidth和linecolor 格子线宽和颜色
    • cbar 是否显示色带 
    • cbar_kws 色带的参数设置,字典形式,在cbar设置为True时才生效,例如{"orientation": "horizontal"}表示横向显示色带
    • square 每个格子是否为正方形
    rng = np.random.RandomState(1)
    df = pd.DataFrame(rng.randint(1,10,(10,12)))
    fig = plt.figure(figsize=(15,6))
    ax1 = plt.subplot(121)
    sns.heatmap(df,vmin=3,vmax=8,linewidth=0.2,square=True)
    ax2 = plt.subplot(122)
    sns.heatmap(df,annot=True,square=False,cbar_kws={"orientation": "horizontal"})

    生成半边热图,mask参数

    rs = np.random.RandomState(33)
    d = pd.DataFrame(rs.normal(size=(100, 26)))
    corr = d.corr() #求解相关性矩阵表格,26*26的一个正方数据
    
    mask = np.zeros_like(corr, dtype=np.bool)
    mask[np.triu_indices_from(mask)] = True
    # 设置一个“上三角形”蒙版
    
    cmap = sns.diverging_palette(220, 10, as_cmap=True)# 设置调色盘
    
    sns.heatmap(corr, mask=mask, cmap=cmap, vmax=.3, center=0,square=True, linewidths=0.2)

    四、结构化图表可视化

    tips = sns.load_dataset("tips")  # 导入数据
    g = sns.FacetGrid(tips, col="time", row="smoker")#  创建一个绘图表格区域,列按time分类、行按smoker分类
    g.map(plt.hist, "total_bill",alpha = 0.5,color = 'b',bins = 10) # 以total_bill字段数据分别做直方图统计

    g = sns.FacetGrid(tips, col="day", 
                      height=4,    # 图表大小
                      aspect=.8) # 图表长宽比
    
    g.map(plt.hist, "total_bill", bins=10,
          histtype = 'step',   #'bar', 'barstacked', 'step', 'stepfilled'
          color = 'k')

    #散点图
    g = sns.FacetGrid(tips, col="time",  row="smoker")
    
    g.map(plt.scatter, 
          "total_bill", "tip",    # share{x,y} → 设置x、y数据
          edgecolor="w", s = 40, linewidth = 1)   # 设置点大小,描边宽度及颜色

    g = sns.FacetGrid(tips, col="time", hue="smoker") # 创建一个绘图表格区域,列按col分类,按hue分类
    
    g.map(plt.scatter, 
          "total_bill", "tip",    # share{x,y} → 设置x、y数据
          edgecolor="w", s = 40, linewidth = 1)   # 设置点大小,描边宽度及颜色
    g.add_legend()

    attend = sns.load_dataset("attention")
    print(attend.head())
    
    g = sns.FacetGrid(attend, col="subject", col_wrap=5,# 设置每行的图表数量
                      size=1.5)
    g.map(plt.plot, "solutions", "score", marker="o",color = 'gray',linewidth = 2)# 绘制图表矩阵
    
    g.set(xlim = (0,4),ylim = (0,10),xticks = [0,1,2,3,4], yticks = [0,2,4,6,8,10]) # 设置x,y轴刻度

  • 相关阅读:
    django 省 市 区 联动
    ACM/ICPC 之 Dinic算法(POJ2112)
    ACM/ICPC 之 网络流入门-EK算法(参考模板)(POJ1273)
    ACM/ICPC 之 网络流入门-Ford Fulkerson与SAP算法(POJ1149-POJ1273)
    ACM/ICPC 之 DFS求解欧拉通路路径(POJ2337)
    ACM/ICPC 之 DFS求解欧拉回路+打表(POJ1392)
    ACM/ICPC 之 暴力打表(求解欧拉回路)-编码(POJ1780)
    ACM/ICPC 之 昂贵的聘礼-最短路解法(POJ1062)
    ACM/ICPC 之 SPFA-兑换货币(POJ1860)
    ACM/ICPC 之 欧拉回路两道(POJ1300-POJ1386)
  • 原文地址:https://www.cnblogs.com/Forever77/p/11410065.html
Copyright © 2011-2022 走看看