zoukankan      html  css  js  c++  java
  • Python数据可视化-seaborn

    zhuanzi:https://www.cnblogs.com/gczr/p/6767175.html

    Seaborn其实是在matplotlib的基础上进行了更高级的API封装,从而使得作图更加容易,在大多数情况下使用seaborn就能做出很具有吸引力的图。这里实例采用的数据集都是seaborn提供的几个经典数据集,dataset文件可见于Github。本博客只总结了一些,方便博主自己查询,详细介绍可以看seaborn官方APIexample gallery,官方文档还是写的很好的。

    1  set_style( )  set( )

    set_style( )是用来设置主题的,Seaborn有五个预设好的主题: darkgrid , whitegrid , dark , white ,和 ticks  默认: darkgrid

     
    1. import matplotlib.pyplot as plt  
    2. import seaborn as sns  
    3. sns.set_style("whitegrid")  
    4. plt.plot(np.arange(10))  
    5. plt.show()  

     
     
    set( )通过设置参数可以用来设置背景,调色板等,更加常用。
     
    1. import seaborn as sns  
    2. import matplotlib.pyplot as plt  
    3. sns.set(style="white", palette="muted", color_codes=True)     #set( )设置主题,调色板更常用  
    4. plt.plot(np.arange(10))  
    5. plt.show()  

     

    2  distplot( )  kdeplot( )

    distplot( )为hist加强版,kdeplot( )为密度曲线图 
     
     
    1. import matplotlib.pyplot as plt  
    2. import seaborn as sns  
    3. df_iris = pd.read_csv('../input/iris.csv')  
    4. fig, axes = plt.subplots(1,2)  
    5. sns.distplot(df_iris['petal length'], ax = axes[0], kde = True, rug = True)        # kde 密度曲线  rug 边际毛毯  
    6. sns.kdeplot(df_iris['petal length'], ax = axes[1], shade=True)                     # shade  阴影                         
    7. plt.show()  
     
    1. import numpy as np  
    2. import seaborn as sns  
    3. import matplotlib.pyplot as plt  
    4. sns.set( palette="muted", color_codes=True)  
    5. rs = np.random.RandomState(10)  
    6. d = rs.normal(size=100)  
    7. f, axes = plt.subplots(2, 2, figsize=(7, 7), sharex=True)  
    8. sns.distplot(d, kde=False, color="b", ax=axes[0, 0])  
    9. sns.distplot(d, hist=False, rug=True, color="r", ax=axes[0, 1])  
    10. sns.distplot(d, hist=False, color="g", kde_kws={"shade": True}, ax=axes[1, 0])  
    11. sns.distplot(d, color="m", ax=axes[1, 1])  
    12. plt.show()  

    3  箱型图 boxplot( )

    1. import matplotlib.pyplot as plt  
    2. import seaborn as sns  
    3. df_iris = pd.read_csv('../input/iris.csv')  
    4. sns.boxplot(x = df_iris['class'],y = df_iris['sepal width'])  
    5. plt.show()  
     
    1. import matplotlib.pyplot as plt  
    2. import seaborn as sns  
    3. tips = pd.read_csv('../input/tips.csv')  
    4. sns.set(style="ticks")                                     #设置主题  
    5. sns.boxplot(x="day", y="total_bill", hue="sex", data=tips, palette="PRGn")   #palette 调色板  
    6. plt.show()  

    4  联合分布jointplot( )

     
    1. tips = pd.read_csv('../input/tips.csv')   #右上角显示相关系数  
    2. sns.jointplot("total_bill", "tip", tips)  
    3. plt.show()  
     
    1. tips = pd.read_csv('../input/tips.csv')  
    2. sns.jointplot("total_bill", "tip", tips, kind='reg')       
    3. plt.show()  

    5  热点图heatmap( )

     internal_chars = ['full_sq', 'life_sq', 'floor', 'max_floor', 'build_year', 'num_room', 'kitch_sq', 'state', 'price_doc']
    corrmat = train[internal_chars].corr()

    f, ax = plt.subplots(figsize=(10, 7))
    plt.xticks(rotation='90')
    sns.heatmap(corrmat, square=True, linewidths=.5, annot=True)
    plt.show()

     
    6  散点图scatter( )
    f, ax = plt.subplots(figsize=(10, 7))
    plt.scatter(x=train['full_sq'], y=train['price_doc'], c='r')
    plt.xlim(0,500)
    plt.show()

     

    7.pointplot画出变量间的关系

    grouped_df = train_df.groupby('floor')['price_doc'].aggregate(np.median).reset_index()

    plt.figure(figsize=(12,8))

    sns.pointplot(grouped_df.floor.values, grouped_df.price_doc.values, alpha=0.8, color=color[2])

    plt.ylabel('Median Price', fontsize=12)

    plt.xlabel('Floor number', fontsize=12)

    plt.xticks(rotation='vertical') plt.show()

    8 pairplot( )

    1. import matplotlib.pyplot as plt  
    2. import seaborn as sns  
    3. data = pd.read_csv("../input/iris.csv")  
    4. sns.set()                        #使用默认配色  
    5. sns.pairplot(data,hue="class")   #hue 选择分类列  
    6. plt.show()  
     
     
    1. import seaborn as sns  
    2. import matplotlib.pyplot as plt  
    3. iris = pd.read_csv('../input/iris.csv')  
    4. sns.pairplot(iris, vars=["sepal width", "sepal length"],hue='class',palette="husl")    
    5. plt.show()  
     

    9  FacetGrid( )

    1. import seaborn as sns  
    2. import matplotlib.pyplot as plt  
    3. tips = pd.read_csv('../input/tips.csv')  
    4. g = sns.FacetGrid(tips, col="time",  row="smoker")  
    5. g = g.map(plt.hist, "total_bill",  color="r")  
    6. plt.show()  
     
     

    10  barplot( )

    f, ax=plt.subplots(figsize=(12,20))

    #orient='h'表示是水平展示的,alpha表示颜色的深浅程度
    sns.barplot(y=group_df.sub_area.values, x=group_df.price_doc.values,orient='h', alpha=0.8, color='red')

    #设置y轴、X轴的坐标名字与字体大小
    plt.ylabel('price_doc', fontsize=16)
    plt.xlabel('sub_area', fontsize=16)

    #设置X轴的各列下标字体是水平的
    plt.xticks(rotation='horizontal')

    #设置Y轴下标的字体大小
    plt.yticks(fontsize=15)
    plt.show()

    注:如果orient='v'表示成竖直显示的话,一定要记得y=group_df.sub_area.values, x=group_df.price_doc.values调换一下坐标轴,否则报错

     

    11.bar图

    import matplotlib.pyplot as plt
    import numpy as np
    plt.rc('font', family='SimHei', size=13)

    num = np.array([13325, 9403, 9227, 8651])
    ratio = np.array([0.75, 0.76, 0.72, 0.75])
    men = num * ratio
    women = num * (1-ratio)
    x = ['聊天','支付','团购 优惠券','在线视频']

    width = 0.5
    idx = np.arange(len(x))
    plt.bar(idx, men, width, color='red', label='男性用户')
    plt.bar(idx, women, width, bottom=men, color='yellow', label='女性用户')  #这一块可是设置bottom,top,如果是水平放置的,可以设置right或者left。
    plt.xlabel('应用类别')
    plt.ylabel('男女分布')
    plt.xticks(idx+width/2, x, rotation=40)
    plt.legend()
    plt.show()

    来源:http://blog.csdn.net/qq_34264472/article/details/53814653

     也可以参考:http://seaborn.pydata.org/tutorial/distributions.html

    知乎专栏关于seaborn的:https://zhuanlan.zhihu.com/p/27570774

  • 相关阅读:
    洛谷 P1919 【模板】A*B Problem升级版(FFT快速傅里叶)
    Codeforces Goodbye 2018
    ubuntu 百度云
    【UOJ 351】新年的叶子
    【SDOI2008】仪仗队
    NOI 2002 贪吃的九头龙
    最大获利
    codeforces 814E An unavoidable detour for home
    codeforces 814D An overnight dance in discotheque
    bzoj3191 [JLOI2013]卡牌游戏
  • 原文地址:https://www.cnblogs.com/eternal1025/p/8854296.html
Copyright © 2011-2022 走看看