精华内容
下载资源
问答
  • python seaborn

    2020-07-17 10:00:24
    Seaborn是对matplotlib的extend,是一个数据可视化库,提供更高级的API封装,在应用中更加的方便灵活。下面我简单介绍一下他的用法,实际应用的时候,可以直接从文档中查找这个库,这时候使用就很快捷了。 ...

      Seaborn是对matplotlib的extend,是一个数据可视化库,提供更高级的API封装,在应用中更加的方便灵活。下面我简单介绍一下他的用法,实际应用的时候,可以直接从文档中查找这个库,这时候使用就很快捷了。

     

    提要:1、直方图和密度图

     

       2、柱状图和热力图

     

       3、设置图形显示效果

     

       4、调色功能

     

      老样子,首先将使用它所需要的库导入进来,当然,其中包括numpy之类的是为了演示它的功能才导入的,大家要先理解一下每个库的作用。

    1 import numpy as np
    2 import pandas as pd
    3 import matplotlib.pyplot as plt
    4 from pandas import Series,DataFrame
    5 import seaborn as sns

    回到顶部

    1、直方图和密度图

      如果在交互式环境中,可以通过%matplotlab来解决每次通过plt.show()来显示图像(本人在ipython中,貌似jupyter中%matplotlib inline等等)

    # matplotlib

    1 s1 = Series(np.random.randn(1000)) # 生成1000个点的符合正态分布的随机数
    2 plt.hist(s1) # 直方图,也可以通过plot(),修改里面kind参数实现
    3 s1.plot(kind='kde') # 密度图

    # seaborn

    1 sns.distplot(s1,hist=True,kde=True,rug=True) # 前两个默认就是True,rug是在最下方显示出频率情况,默认为False
    2 # bins=20 表示等分为20份的效果,同样有label等等参数
    3 sns.kdeplot(s1,shade=True,color='r') # shade表示线下颜色为阴影,color表示颜色是红色
    4 sns.rugplot(s1) # 在下方画出频率情况

      给出两种方式通过最基本的方式画出来的效果,怎么样,是不是发现seaborn很强大。

    回到顶部

    2、柱状图和热力图

      (1)下载实验数据:

    1 df = sns.load_dataset('flights') # 在线下载一个数据用于实验,在sns.load_dataset()函数里有很多的数据,想了解更多的可以到GitHub中找到源码,你就会很清楚了

      我们可以先看一下里面的数据,可以看到,这是一个航空的数据,里面有年、月和乘客数量,接下来我们就要在这份数据上进行分析。

      (2)我们可以通过透视表来先对这份数据进行一下处理:

    1 df = df.pivot(index='month',columns='year',values='passengers') # 生成一个透视表,得到一个以年、月为轴的二维数据表

      大家可以自己试一下,这样生成的结果是以年为columns,以月为index,表内数据为对应的乘客数量。

      (3)绘制柱状图

    1 s = df.sum()
    2 # 通过matplotlib绘出图形
    3 s.plot(kind='bar')
    4 # 通过seaborn绘出图形
    5 sns.barplot(x=s.index,y=s.values)

      

      (4)绘制热力图

    1 df.plot() # 线性的显示数据情况
    2 sns.heatmap(df) # 生成热力图
    3 # sns.heatmap(df,annot=True,fmt='d') # annot参数是指显示数据,fmt='d'是指以整数形式显示

    回到顶部

    3、设置图形显示效果

    (1)axes_style and set_style

     

    1 x = np.linspace(0,14,100)
    2 y1 = np.sin(x)
    3 y2 = np.sin(x+2)*1.25
    4 def sinplot():
    5     plt.plot(x,y1)
    6     plt.plot(x,y2)
    7 
    8 sinplot() # 以matplotlib显示,生成两个函数图像

     

     

    1 # seaborn的5种装饰风格
    2 styles = ['darkgrid','dark','white','whitegrid','tricks'] # 颜色代表背景颜色,grid代表是否有网格
    3 sns.set_style(style[0]) # 进行装饰,括号内可以直接写装饰风格
    4 sinplot() # 经过修饰之后的图像
    5 
    6 sns.axes_style() # 显示当前主题的内容,这些数据都可以修改微调
    7 # 更改的时候就将其信息的以字典形式复制到set_style()里,当做参数来修改(注意是以字典的形式)
    8 sns.set() # 设置风格为空,即清空自己定义的,恢复到默认的时候

     

    (2)plotting_context() and set_context()

     

    1 context = ['paper','notebook','talk','poster'] # seaborn本身定义好的
    2 sns.set_context('paper',rc={'grid.linewidth':3.0}) # rc参数
    3 sinplot()
    4 
    5 sns.plotting_context() # 显示出当前状态的数据
    6 sns.set() # 恢复到默认

     

      图像貌似一样,但并不是没有成功,只是变化比较细微,真正用到的时候就可以体会到了。

    回到顶部

    4、调色功能

     

    1 # 先绘制一个图像
    2 def sinplot1():
    3     x = np.linspace(0,14,100)
    4     plt.figure(figsize=(8,6)) # 图像比较小时,通过这个函数更改大小
    5     for i in range(4):
    6       plt.plot(x,np.sin(x+i)*(i+0.75),label='sin(x+%s)*(%s+0.75)' % (i,i))
    7     plt.legend()
    8 sinplot1()

     

    1 # 引入seaborn
    2 sns.color_palette() # 使用调色板
    3 # 不传入参数返回当前使用的调色板(RGB)
    4 sns.palplot(sns.color_palette()) # 画出调色板,参数为上面的调色板
    • 接下来,我们就要调整我们的调色板了

     

    1 pal.style = ['deep','nuted','pastel','bright','dark','colorblind'] # seaborn默认定义的调色板
    2 
    3 # 第一种设置画板方式
    4 sns.set_palette(sns.color_palette('dark')) # 设置色板
    5 sns.set() # 恢复默认风格
    6 
    7 # 第二种设置画板方式,并且最后恢复到默认
    8 with sns.color_palette():
    9     sinplot1() # 在内部调整画板输出图形,当with结束时,则恢复默认

     

    • 调色板里的颜色是定义好的,那么如果我们将要绘制的图形包括很多的函数,需要更多的颜色,该怎么办呢。

     

    1 # 默认提供的色板数量是固定的,如果图像是更多的函数,那么颜色将循环色板中的风格。如果想不使他颜色有相同,可以通过sns.color_palette()来修改
    2 sns.color_palette([(0.5,0.2,0.6),(0.3,0.3,0.4)]) # 因为色板是以列表的形式存储的,里面的每种风格以元组的形式存在所以需要用[()]
    3 
    4 # 第二种增加色板颜色的方法
    5 sns.color_palette('hls',8) # hls方法,后面写参数8,即生成有8种不同颜色的色板

     

     

      作者:渔单渠(yudanqu)

      博客地址:http://www.cnblogs.com/yudanqu/

    作者:渔单渠 微信搜索“小田学Python”

    出处:https://www.cnblogs.com/yudanqu/

    本文版权归作者和博客园共有,欢迎转载,但未经作者

    展开全文
  • python seaborn画图

    万次阅读 多人点赞 2017-04-03 20:52:21
    python seaborn画图以前觉得用markdown写图文混排的文字应该很麻烦,后来发现CSDN的markdown真是好用的。在做分析时候,有时需要画几个图看看数据分布情况,但总记不住python的绘图函数。今天有空顺便整理下python的...

    python seaborn画图

    以前觉得用markdown写图文混排的文字应该很麻烦,后来发现CSDN的markdown真是好用的。

    在做分析时候,有时需要画几个图看看数据分布情况,但总记不住python的绘图函数。今天有空顺便整理下python的seaborn绘图函数库。
    Seaborn其实是在matplotlib的基础上进行了更高级的API封装,从而使得作图更加容易,在大多数情况下使用seaborn就能做出很具有吸引力的图,而使用matplotlib能制作具有更多特色的图。应该把Seaborn视为matplotlib的补充,而不是替代物。

    seaborns是针对统计绘图的,方便啊。

    一般来说,seaborn能满足数据分析90%的绘图需求,够用了,如果需要复杂的自定义图形,还是要matplotlit。这里也只是对seaborn官网的绘图API简单翻译整理下,对很多参数使用方法都没有说到,如果需要精细绘图,还是需要参照其seaborn的文档的。

    这里简要介绍常用的图形,常用的参数,其精美程度不足以当做报告绘图,算是做笔记吧。

    1.几个概念

    如果使用过R语言的ggplot2绘图包,对分组分面,统计绘图等概念应该很熟悉,这里也介绍下。

    1.1.分组绘图

    比如说需要在一张图上绘制两条曲线,分别是南方和北方的气温变化,分别用不同的颜色加以区分。在seaborn中用hue参数控制分组绘图。

    1.2.分面绘图

    其实就是在一张纸上划分不同的区域,比如2*2的子区域,在不同的子区域上绘制不同的图形,在matplotlib中就是 add_subplot(2,2,1),在seaborn中用col参数控制,col的全称是columns,不是color,如果辅助col_wrap参数会更好些。后来发现,col可以控制columns的子图,那么row可以控制rows的子图排列。
    如果需要分面绘图,应该使用seaborn的FacetGrid对象,seaborn的一般的绘图函数是没有分面这个参数的。

    1.3.统计函数

    分组绘图的时候,会对分组变量先要用统计函数,然后绘图,比如先计算变量的均值,然后绘制该均值的直方图。统计绘图参数是 estimator,很多情况下默认是numpy.mean。在ggplot2中就大量使用了这种方法。如果不适用统计绘图,就需要先用pandas进行groupby分组汇总,然后用seaborn绘图,多此一举了。

    2.图形分类

    在seaborn中图形大概分这么几类,因子变量绘图,数值变量绘图,两变量关系绘图,时间序列图,热力图,分面绘图等。

    因子变量绘图

    1. 箱线图boxplot
    2. 小提琴图violinplot
    3. 散点图striplot
    4. 带分布的散点图swarmplot
    5. 直方图barplot
    6. 计数的直方图countplot
    7. 两变量关系图factorplot

    回归图
    回归图只要探讨两连续数值变量的变化趋势情况,绘制x-y的散点图和回归曲线。

    1. 线性回归图lmplot
    2. 线性回归图regplot

    分布图
    包括单变量核密度曲线,直方图,双变量多变量的联合直方图,和密度图

    热力图
    1. 热力图heatmap

    聚类图
    1. 聚类图clustermap

    时间序列图
    1. 时间序列图tsplot
    2. 我的时序图plot_ts_d , plot_ts_m

    分面绘图
    1.分面绘图FacetGrid

    3.因子变量绘图

    3.1.boxplot箱线图

    import seaborn as sns
    sns.set_style("whitegrid")
    tips = sns.load_dataset("tips")
    # 绘制箱线图
    ax = sns.boxplot(x=tips["total_bill"])
    # 竖着放的箱线图,也就是将x换成y
    ax = sns.boxplot(y=tips["total_bill"])

    这里写图片描述

    # 分组绘制箱线图,分组因子是day,在x轴不同位置绘制
    ax = sns.boxplot(x="day", y="total_bill", data=tips)

    这里写图片描述

    # 分组箱线图,分子因子是smoker,不同的因子用不同颜色区分
    # 相当于分组之后又分组
    ax = sns.boxplot(x="day", y="total_bill", hue="smoker",
                        data=tips, palette="Set3")

    这里写图片描述

    # 改变线宽,linewidth参数
    ax = sns.boxplot(x="day", y="total_bill", hue="time",
                        data=tips, linewidth=2.5)
    
    # 改变x轴顺序,order参数
    ax = sns.boxplot(x="time", y="tip", data=tips,
                        order=["Dinner", "Lunch"])
    # 对dataframe的每个变量都绘制一个箱线图,水平放置
    iris = sns.load_dataset("iris")
    ax = sns.boxplot(data=iris, orient="h", palette="Set2")

    这里写图片描述

    箱线图+有分布趋势的散点图–>的组合图

    # 箱线图+有分布趋势的散点图
    # 图形组合也就是两条绘图语句一起运行就可以了,相当于图形覆盖了
    ax = sns.boxplot(x="day", y="total_bill", data=tips)
    ax = sns.swarmplot(x="day", y="total_bill", data=tips, color=".25")

    这里写图片描述

    3.2.violinplot小提琴图

    小提琴图其实是箱线图核密度图的结合,箱线图展示了分位数的位置,小提琴图则展示了任意位置的密度,通过小提琴图可以知道哪些位置的密度较高。在图中,白点是中位数,黑色盒型的范围是下四分位点到上四分位点,细黑线表示须。外部形状即为核密度估计(在概率论中用来估计未知的密度函数,属于非参数检验方法之一)。

    import seaborn as sns
    sns.set_style("whitegrid")
    tips = sns.load_dataset("tips")
    # 绘制小提琴图
    ax = sns.violinplot(x=tips["total_bill"])

    这里写图片描述

    # 分组的小提琴图,同上面的箱线图一样通过X轴分组
    ax = sns.violinplot(x="day", y="total_bill", data=tips)

    这里写图片描述

    # 通过hue分组的小提琴图,相当于分组之后又分组
    ax = sns.violinplot(x="day", y="total_bill", hue="smoker",
                            data=tips, palette="muted")

    这里写图片描述

    # 分组组合的小提琴图,其实就是hue分组后,各取一半组成一个小提琴图
    ax = sns.violinplot(x="day", y="total_bill", hue="smoker",
                            data=tips, palette="muted", split=True)

    这里写图片描述

    # 调整x轴顺序,同样通过order参数
    ax = sns.violinplot(x="time", y="tip", data=tips,
                        order=["Dinner", "Lunch"])

    这里写图片描述

    其他的样式不常用,就不贴上来了。

    3.3.stripplot散点图

    需要注意的是,seaborn中有两个散点图,一个是普通的散点图,另一个是可以看出分布密度的散点图。下面把它们花在一起就明白了。

    # 普通的散点图
    ax1 = sns.stripplot(x=tips["total_bill"])
    # 带分布密度的散点图
    ax2 = sns.swarmplot(x=tips["total_bill"])

    这里写图片描述

    # 分组的散点图
    ax = sns.stripplot(x="day", y="total_bill", data=tips)

    这里写图片描述

    # 添加抖动项的散点图,jitter可以是0.1,0.2...这样的小数,表示抖动的程度大小
    ax = sns.stripplot(x="day", y="total_bill", data=tips, jitter=True)

    这里写图片描述

    # 是不是想横着放呢,很简单的,x-y顺序换一下就好了
    ax = sns.stripplot(x="total_bill", y="day", data=tips,jitter=True)

    这里写图片描述

    # 重点来了,分组绘制,而且是分组后分开绘制,在柱状图中,跟分组柱状图类似的。
    # 通过 hue, split 参数控制
    # 1.分组
    ax = sns.stripplot(x="sex", y="total_bill", hue="day",
                        data=tips, jitter=True)
    # 2.分开绘制
    ax = sns.stripplot(x="day", y="total_bill", hue="smoker",
                    data=tips, jitter=True,palette="Set2", split=True)

    这里写图片描述
    这里写图片描述

    # 散点图+小提起图
    # 两条命令一起运行就行了
    ax = sns.violinplot(x="day", y="total_bill", data=tips,inner=None, color=".8")
    ax = sns.stripplot(x="day", y="total_bill", data=tips,jitter=True)

    这里写图片描述

    3.4.swarmplot带分布的散点图

    swarmplt的参数和用法和stripplot的用法是一样的,只是表现形式不一样而已。

    import seaborn as sns
    sns.set_style("whitegrid")
    tips = sns.load_dataset("tips")
    ax = sns.swarmplot(x=tips["total_bill"])

    这里写图片描述

    # 分组的散点图
    ax = sns.swarmplot(x="day", y="total_bill", data=tips)

    这里写图片描述

    # 箱线图+散点图
    # whis 参数设定是否显示箱线图的离群点,whis=np.inf 表示不显示
    ax = sns.boxplot(x="tip", y="day", data=tips, whis=np.inf)
    ax = sns.swarmplot(x="tip", y="day", data=tips)

    这里写图片描述

    # 小提琴图+散点图
    ax = sns.violinplot(x="day", y="total_bill", data=tips, inner=None)
    ax = sns.swarmplot(x="day", y="total_bill", data=tips,
                        color="white", edgecolor="gray")

    这里写图片描述

    3.5.pointplot

    Show point estimates and confidence intervals using scatter plot glyphs.
    使用散点图符号显示点估计和置信区间。

    这个我不知道在什么地方用到,不太明白。就先写这个了。

    3.6.barplot直方图

    我不喜欢显示直方图上面的置信度线,难看,所以下面的图形我都设置ci=0.(Size of confidence intervals to draw around estimated values)

    直方图的统计函数,绘制的是变量的均值 estimator=np.mean

    # 注意看看Y轴,看到没,统计函数默认是 mean,
    import seaborn as sns
    sns.set_style("whitegrid")
    tips = sns.load_dataset("tips")
    ax = sns.barplot(x="day", y="total_bill", data=tips,ci=0)

    这里写图片描述

    # 分组的柱状图
    ax = sns.barplot(x="day", y="total_bill", hue="sex", data=tips,ci=0)

    这里写图片描述

    # 绘制变量中位数的直方图,estimator指定统计函数
    from numpy import median
    ax = sns.barplot(x="day", y="tip", data=tips, 
                        estimator=median, ci=0)

    这里写图片描述

    # 改变主题颜色
    # palette="Blues_d"
    ax = sns.barplot("size", y="total_bill", data=tips, 
                        palette="Blues_d")

    这里写图片描述

    3.7.countplot计数统计图

    这个很重要,对因子变量计数,然后绘制条形图

    import seaborn as sns
    sns.set(style="darkgrid")
    titanic = sns.load_dataset("titanic")
    ax = sns.countplot(x="class", data=titanic)

    这里写图片描述

    # 分组绘图
    ax = sns.countplot(x="class", hue="who", data=titanic)
    
    # 如果是横着放,x用y替代
    ax = sns.countplot(y="class", hue="who", data=titanic)

    这里写图片描述

    3.8.factorplot

    这是一类重要的变量联合绘图。
    绘制 因子变量-数值变量 的分布情况图。

    # 用小提琴图 反应 time-pulse 两变量的分布情形
    import seaborn as sns
    sns.set(style="ticks")
    exercise = sns.load_dataset("exercise")
    g = sns.factorplot(x="time", y="pulse", hue="kind",
                        data=exercise, kind="violin")

    这里写图片描述

    # 不同的deck(因子)绘制不同的alive(数值),col为分子图绘制,col_wrap每行画4个子图
    titanic = sns.load_dataset("titanic")
    g = sns.factorplot(x="alive", col="deck", col_wrap=4,
                        data=titanic[titanic.deck.notnull()],
                        kind="count", size=2.5, aspect=.8)

    这里写图片描述

    4.回归图

    回归图有两个,我暂时没有看出他们有什么区别,从函数说明来看看吧。
    lmplot: Plot data and regression model fits across a FacetGrid.
    regplot:Plot data and a linear regression model fit.

    4.1.回归图lmplot

    # 线性回归图
    import seaborn as sns; sns.set(color_codes=True)
    tips = sns.load_dataset("tips")
    g = sns.lmplot(x="total_bill", y="tip", data=tips)

    这里写图片描述

    # 分组的线性回归图,通过hue参数控制
    g = sns.lmplot(x="total_bill", y="tip", hue="smoker", data=tips)

    这里写图片描述

    # 分组绘图,不同的组用不同的形状标记
    g = sns.lmplot(x="total_bill", y="tip", hue="smoker", 
                    data=tips,markers=["o", "x"])

    这里写图片描述

    # 不仅分组,还分开不同的子图绘制,用col参数控制
    g = sns.lmplot(x="total_bill", y="tip", col="smoker", data=tips)

    这里写图片描述

    # col+hue 双分组参数,既分组,又分子图绘制,jitter控制散点抖动程度
    g = sns.lmplot(x="size", y="total_bill", hue="day", 
                    col="day",data=tips, aspect=.4, x_jitter=.1)

    这里写图片描述

    # 分组绘制,控制size尺寸
    g = sns.lmplot(x="total_bill", y="tip", col="day", hue="day",
                    data=tips, col_wrap=2, size=3)

    这里写图片描述

    # 既然col可以控制分组子图的,那么row也是可以控制分组子图的
    g = sns.lmplot(x="total_bill", y="tip", row="sex", 
                    col="time", data=tips, size=3)

    这里写图片描述

    4.2.回归图regplot

    Plot the relationship between two variables in a DataFrame:

    import seaborn as sns; sns.set(color_codes=True)
    tips = sns.load_dataset("tips")
    ax = sns.regplot(x="total_bill", y="tip", data=tips)

    这里写图片描述

    # 控制散点的形状和颜色
    import numpy as np; np.random.seed(8)
    mean, cov = [4, 6], [(1.5, .7), (.7, 1)]
    x, y = np.random.multivariate_normal(mean, cov, 80).T
    ax = sns.regplot(x=x, y=y, color="g", marker="+")

    这里写图片描述

    # 控制回归的置信度,你会看到拟合直线的外面的面积的有变化的
    ax = sns.regplot(x=x, y=y, ci=68)

    这里写图片描述

    # 上面的都是拟合一次曲线,拟合二次曲线通过order=2设置,
    # 拟合一次曲线相当于 order=1
    ans = sns.load_dataset("anscombe")
    ax = sns.regplot(x="x", y="y", data=ans.loc[ans.dataset == "II"],
                    scatter_kws={"s": 80},order=2, ci=None, truncate=True)

    这里写图片描述

    5.数值分布绘图

    5.1.直方图histplot

    直方图hist=True,核密度曲线rug=True

    # 绘制数值变量的密度分布图
    # 默认既绘制核密度曲线,也绘制直方图
    import seaborn as sns, numpy as np
    sns.set(rc={"figure.figsize": (8, 4)}); np.random.seed(0)
    x = np.random.randn(100)
    ax = sns.distplot(x)

    这里写图片描述

    # 只绘制核密度曲线,不绘制直返图
    ax = sns.distplot(x, rug=True, hist=False)

    这里写图片描述

    # 横着放
    ax = sns.distplot(x, vertical=True)

    这里写图片描述

    5.2.核密度图kdeplot

    # 绘制核密度图
    import numpy as np; np.random.seed(10)
    import seaborn as sns; sns.set(color_codes=True)
    mean, cov = [0, 2], [(1, .5), (.5, 1)]
    x, y = np.random.multivariate_normal(mean, cov, size=50).T
    ax = sns.kdeplot(x)

    这里写图片描述

    # shade参数决定是否填充曲线下面积
    ax = sns.kdeplot(x, shade=True, color="r")

    这里写图片描述

    # 双变量密度图,相当于等高线图了
    # shade 参数改用颜色深浅表示密度的大小,不过不用,就真的是等高线了
    ax = sns.kdeplot(x, y, shade=True)

    这里写图片描述

    # 分组绘制双变量的核密度图
    # 相当于绘制两个核密度图,通过图可以看到密度中心
    # 类似于挖掘算法中聚类中心绘图
    iris = sns.load_dataset("iris")
    setosa = iris.loc[iris.species == "setosa"]  # 组1
    virginica = iris.loc[iris.species == "virginica"]  # 组2
    
    ax = sns.kdeplot(setosa.sepal_width, setosa.sepal_length, 
                        cmap="Reds", shade=True, shade_lowest=False)
    
    ax = sns.kdeplot(virginica.sepal_width, virginica.sepal_length, 
                        cmap="Blues", shade=True, shade_lowest=False)

    这里写图片描述

    5.3.双变量关系图jointplot

    joint,顾名思义,就是联合呀。
    Draw a plot of two variables with bivariate and univariate graphs.

    kind参数可以使用不同的图形反应两变量的关系,比如点图,线图,核密度图。

    # 默认绘制双变量的散点图,计算两个变量的直方图,计算两个变量的相关系数和置信度
    import numpy as np, pandas as pd; np.random.seed(0)
    import seaborn as sns; sns.set(style="white", color_codes=True)
    tips = sns.load_dataset("tips")
    g = sns.jointplot(x="total_bill", y="tip", data=tips)

    这里写图片描述

    # 通过kind参数,除了绘制散点图,还要绘制拟合的直线,拟合的核密度图
     g = sns.jointplot("total_bill", "tip", data=tips, kind="reg")

    这里写图片描述

    # 使用六角形代替点图图
    g = sns.jointplot("total_bill", "tip", data=tips, kind="hex")

    这里写图片描述

    # 绘制核密度图
    iris = sns.load_dataset("iris")
    g = sns.jointplot("sepal_width", "petal_length", data=iris, 
                        kind="kde", space=0, color="g")

    这里写图片描述

    # 控制图形的大小和颜色
    g = sns.jointplot("total_bill", "tip", data=tips, 
                        size=5, ratio=3, color="g")

    这里写图片描述

    5.4.变量关系组图pairplot

    就是绘制dataframe中各个变量两两之间的关系图。
    在变量关系图中,最常见的就是 x-y的线图,x-y的散点图,x-y的回归图。其实这三者都可以通过lmplot绘制,只是控制不同的参数而已。x-y的线图,其实就是时间序列图,这里就不说了。
    这里又说一遍散点图,是为了和前面的因子变量散点图相区分,前面的因子变量散点图,讲的是不同因子水平的值绘制的散点图,而这里是两个数值变量值散点图关系。为什么要用lmplot呢,说白了就是,先将这些散点画出来,然后在根据散点的分布情况拟合出一条直线。但是用lmplot总觉得不好,没有用scatter来得合适。

    # x-y 的散点图,不画回归线,fit_reg=False
    
    tips = sns.load_dataset("tips")
    g = sns.lmplot(x="total_bill", y="tip", data=tips,
                    fit_reg=False,hue='smoker',scatter=True)
    
    # 只画回归线,不画散点图,scatter=False
    g = sns.lmplot(x="total_bill", y="tip", data=tips,
                    fit_reg=True,hue='smoker',scatter=False)

    这里写图片描述
    这里写图片描述

    import seaborn as sns; sns.set(style="ticks", color_codes=True)
    iris = sns.load_dataset("iris")
    g = sns.pairplot(iris)

    这里写图片描述

    # 分组的变量关系图,似乎很厉害啊
    g = sns.pairplot(iris, hue="species")

    这里写图片描述

    # hue 分组后,不同的组用不同的形状标记
    g = sns.pairplot(iris, hue="species", markers=["o", "s", "D"])

    这里写图片描述

    # 当然也可以只取dataframe中的一部分变量绘图
    g = sns.pairplot(iris, vars=["sepal_width", "sepal_length"])

    这里写图片描述

    # 对角线默认绘制直方图,当然也可以绘制核密度图
    g = sns.pairplot(iris, diag_kind="kde")
    # 相应的,两变量关系图,也可以绘制线性回归图

    这里写图片描述

    这里写图片描述

    6.热力图

    6.1.热力图heatmap

    import numpy as np; np.random.seed(0)
    import seaborn as sns; sns.set()
    uniform_data = np.random.rand(10, 12)
    ax = sns.heatmap(uniform_data)

    这里写图片描述

    # 改变颜色映射的值范围
    ax = sns.heatmap(uniform_data, vmin=0, vmax=1)

    这里写图片描述

    Plot a dataframe with meaningful row and column labels:
    # 绘制x-y-z的热力图,比如 年-月-销量 的热力图
    flights = sns.load_dataset("flights")
    flights = flights.pivot("month", "year", "passengers")
    ax = sns.heatmap(flights)

    这里写图片描述

    # 绘制热力图,还要将数值写到热力图上
    ax = sns.heatmap(flights, annot=True, fmt="d")

    这里写图片描述

    # 这个图在绘制缺失值分布有用,但是不知道怎么样。
    # Plot every other column label and don’t plot row labels 
    data = np.random.randn(50, 20)
    ax = sns.heatmap(data, xticklabels=2, yticklabels=False)

    这里写图片描述

    7.聚类图clustermap

    暂时不知道怎么用,先这样吧。

    8.时间序列图

    tsplot函数说是绘制时间序列图,还不如说是绘制简单的线图更加合适吧,因为我在绘制带timestap时间索引的pandas.Series时,并没有自动升采样绘图,只是数据有有什么数据就画什么,这在时间序列上应该是不对的。

    因为我遇到这样一种情况,一个产品只在上半年卖,从数据库中取出数据只有每年上半年的数据,下半年没有数据也应该填充为0才对啊,但是seaborn的tsplot没有这个功能。

    下面先介绍tsplot绘制线图吧,传入一个list或者series,直接绘制线图。

    8.1.tsplot时序图

    # Plot a trace with translucent confidence bands:
    # 绘制带有半透明置信带的轨迹:
    # data是多组list的组合,这时候应该绘制多条曲线才对啊,其实不是的,是多组list的均值的序列图(默认)
    import numpy as np; np.random.seed(22)
    import seaborn as sns; sns.set(color_codes=True)
    x = np.linspace(0, 15, 31)
    data = np.sin(x) + np.random.rand(10, 31) + np.random.randn(10, 1)
    ax = sns.tsplot(data=data)

    这里写图片描述

    # tsplot的参数不太懂,直接上图吧
    gammas = sns.load_dataset("gammas")
    ax = sns.tsplot(time="timepoint", value="BOLD signal", 
                    unit="subject", condition="ROI", data=gammas)

    这里写图片描述

    # 绘制不同的置信度拟合图,这个好用
    ax = sns.tsplot(data=data, ci=[68, 95], color="m")

    这里写图片描述

    # 使用不同的统计函数,默认的是均值,这里是中位数
    ax = sns.tsplot(data=data, estimator=np.median)

    这里写图片描述

    8.2.panda线图

    pandas的dataframe本身也有绘图函数,对于常见的分析图形还是很方便的,而且可以在plot函数中指定title等

    sale4.loc[sale4['sku']=='SKU412946',['month','salecount']]\
         .plot(x='month',y='salecount',title='SKU412946')

    这里写图片描述

    8.3.采样的时序图

    这里重点讲一下。如果时序中每天的数据都有还好说,如果没有,就需要采样了。

    def plot_ts_day(x,y):
        """绘制每天的时间序列图。
        需要注意的是,序列是不是连续的,也就是说某天的数据是没有的,因此需要采样至每天都有记录,原来数据没有的就填充0
        x:时间轴,string或者time类型,是一个seires
        y:值
        """
        # x转成时间类型Timestamp,y也转成list
        x=[pd.to_datetime(str(i)) for i in x]
        y=[i for i in y]
        s=pd.Series(y,index=x)
        s = s.resample(rule='D',fill_method='ffill') # 生采样没有的会被填充
        # 原来没有的就填充为0
        s[s.index]=0
        s[x]=y
        # 重建索引,画出来的图好看点
        x2 = [i.strftime('%Y-%m-%d') for i in s.index]
        s.index = x2
        # 画图,这里使用series的plot函数,而不是seaborn.tsplot函数
        s.plot()

    这里写图片描述

    def plot_ts_month(x,y):
        """绘制月的时间序列图,每月一个数据点,而不是每天一个"""
        # 将x转成时间类型timestamp,y也转成list
        try:
            x = [pd.to_datetime(str(i)) for i in x]
        except:
            x=[pd.to_datetime(str(i)+'01') for i in x]
        y=[i for i in y]
        #
        s=pd.Series(y,index=x)
        # 降采样至月
        s = s.resample('M', label='right').sum().fillna(0)
        # 重建索引,这样画出来的图好看点
        s.index=[i.strftime('%Y%m') for i in s.index]
        s.plot()

    这里写图片描述

    8.4.pandas分组的线图

    说实话,到现在还没搞懂怎么用sns.tsplot绘制分组线图,但是任务紧急,就用pandas的dataframe自带方法plot来绘图了,其实也挺简单的。
    主要注意的是,尽量给dataframe或者series建立时间索引,不然x轴很难看的。

    # 绘制月销量图
    # 数据如下
    # year  month2  salecount
    # 2014       1        531
    # 2014       2        505
    
    # 建立索引,'201601'
    data.index = data['year'].map(str)+data['month2'].map(lambda x: str(x) if x>=10 else '0'+str(x))
    # 绘图,其实也就是和8.3的方法一致了
    data['salecount'].plot()

    分组的线图,比如seaborn中的hue参数,方法是,先将dataframe长表格式转成宽表格式(透视表),每列是不同的年。

    # 分组的线图
    # 转成透视表后,绘图
    data.pivot(index='month2',columns='year',values='salecount').plot(title='销量')
    
    # 当数据很大的时候,你想绘制分组的统计图,比如将不同产品,相同的年月的销量进行加或者均值后在绘制线图
    # 使用 aggfunc 参数即可,默认是mean
    data.pivot_table(index='month2',columns='year',values='salecount',aggfunc='sum') \
        .plot(title='销量',style='o-')

    这里写图片描述

    图形格式选项

    # 图形参数
    # style
    # 图形的属性
    # 1.color:颜色
    # 1.1 r:红色
    # 1.2 b:蓝色
    # 1.3 g:绿色
    # 1.3 y:黄色
    #
    # 2.数据标记markder
    # 2.1 o:圆圈
    # 2.2 .:圆点
    # 2.2 d:棱形
    #
    # 3.线型linestyle
    # 3.1 没有参数的话就是默认画点图
    # 3.2 --:虚线
    # 3.3 -:实线
    #
    # 4.透明度
    # alpha
    #
    # 5.大小
    # size
    # 绘 "点-线" 图
    data.pivot(index='month2',columns='year',values='salecount')\
        .plot(title='销量',style='-o')

    这里写图片描述

    9.双坐标轴图

    有没有遇到这样一种情况,需要将销量和趋势图和温度的变化图同时画在一幅图上,以便观察两者的趋势变化情况,但是因两者是数值差距很大,如果共用同一Y轴,温度曲线就基本看不到了。还是上图上代码吧。

    import seaborn as sns
    sale=pd.Series(np.random.random(10)*100).map(int)
    tmperature=pd.Series(np.random.random(10)*10).map(int)
    
    ax=plt.subplot(111)
    sale.plot(ax=ax,color='b')
    ax.set_xlabel('time')
    ax.set_ylabel('sale')
    
    # 重点来了,twinx 或者 twiny 函数
    ax2 = ax.twinx()
    tmperature.plot(ax=ax2,color='r')
    ax2.set_ylabel('tmperature')
    plt.title('double series figure')

    这里写图片描述

    9.一些技巧

    9.1 批量保存图片

    如果只有一张图片,这没什么好说的,但是如果要对每个维度绘图,然后保存图片呢。

    fig = plt.figure()
    ax=fig.add_subplot(111)
    sub_data[years].plot(ax=ax, style='o-',title='%s 月销量趋势图'%lev3)
    file = r'E:\服装预测\销量趋势-%s.jpg' %lev3
    savefig(file)
    time.sleep(0.5)  # 注意这里要暂停一下,不然会出问题的
    plt.close()   # 最后记得关闭句柄

    9.2 显示中文问题

    import seaborn as sns
    import matplotlib as mpl
    import matplotlib.pyplot as plt
    from matplotlib.pyplot import savefig
    
    mpl.rcParams['font.sans-serif'] = ['SimHei']  # 指定默认字体
    mpl.rcParams['axes.unicode_minus'] = False  # 解决保存图像是负号'-'显示为方块的问题
    

    10.分段统计绘图

    遇到这样一种情况,如下的数据格式,现在platform不是重点,需要对diff_date字段分段汇总然后绘图。

    # platform  age         cnt
    # 2         0           22
    # 2         0           40
    # 4         0.1         47
    # 5         0.1         48
    # 3         0.1         51

    这里借用panas.cut函数,因为是绘图看趋势,不需要精确得到每个分段的分割点。

    cut函数有两种使用方法,如果bins=10这样的数值,则将series切成等间隔的10段,如果bins=[0,5,20,55...]这样的一个列表,则根据列表规则切分。

    # 先用pd.cut分段,并取出分段数值
    # 通过 precision 控制小数的位数
    data['cut_point']=pd.cut(data['age'], 
        bins=[0,3,5.9,8.9,11.9,14.8,17.8,20.8,23.8,26.7,29.7],  # 分割点
        labels=['0-3','3-5.9',......]    # 区间命名
        right=True,    # 区间默认是坐开右闭
        precision=1)
    
    # 用sns画图,可以直接汇总每个分段的数量后绘图,而不需要groupby汇总
    # 相当于回到前面,用barplot绘图
    sns.barplot(x='cut_point',y='cnt', data=data, estimator=np.sum, ci=0)
    plt.xlabel('这是横坐标名称')
    plt.ylabel('这是纵坐标名称')
    plt.title('这是图标标题')

    这里写图片描述

    11.分面子图绘图

    11.1

    接下来好好说说这个比较难的,在10中我们分区间绘图,但是我们没有考虑platform这个因子变量啊,如果我们要考虑这个因子变量,就需要分面了,比如不同的platform画一个子图。

    # 和上面的一样,先分组取出分割点
    
    # 用pd.cut分段,并取出分段数值,通过 precision 控制小数的位数
    data['bins']=pd.cut(data['age'], bins=10,precision=1)
    # 取出分割点,因为cut后得到的是 '(2.99, 5.97]' 这样的字符串
    data['cut_point']=data['bins'].apply(lambda x: eval(x.replace(']',')'))[1])
    
    # 下面重点来了,用FacetGrid进行子图绘制
    g=sns.FacetGrid(data=data,col='platform',col_wrap=3,size=5)   # 这里相当于groupby
    g=g=g.map(sns.barplot,'cut_point','cnt',ci=0, estimator=np.sum)
    # 很奇怪的是,如果写 
    # g=g.map(sns.barplot,x='cut_point',y='cnt',ci=0, estimator=np.sum)就报错。

    这里写图片描述

    11.2

    自定义子图绘制

    def my_barplot(x,y,**kwargs):
        """
        自定义函数的时候,没有显示传入dataframe,但是会自动获取,很神奇吧。
        x,y是dataframe的列名
        """
        ax = plt.gca()  # 这个是重点,获取对应的ax子图句柄
        data['bins']=pd.cut(data['age'], bins=10,precision=1)
        data['cutpoint']=data['bins'].apply(lambda x: eval(x.replace(']', ')'))[1])
        sns.barplot(x='cutpoint', y='cnt',data=data, estimator=np.sum, ci=0, ax=ax)
    
    g = sns.FacetGrid(data=data, col='platform',col_wrap=3,
                        size=5,sharex=False)
    g = g.map(my_barplot,'age','cnt')

    这里写图片描述

    12.颜色主题

    主题

    在换了win10后发现seaborn的画出来的图很难看,基本上就是matplotlib的样子。想来肯定是主题和颜色样式没有设置好。今天看了下文档,补充下主题的设置。
    seaborn的默认主题就是最好看的,如下:

    import seaborn as sns
    sns.set()           # 恢复默认主题,在win10中开始的时候要执行一次。

    还有其他几个主题,包括:

    sns.set_style("whitegrid")  # 白色网格背景
    sns.set_style("darkgrid")   # 灰色网格背景
    sns.set_style("dark")       # 灰色背景
    sns.set_style("white")      # 白色背景
    sns.set_style("ticks")      # 四周加边框和刻度

    下面来几张图,发现就默认主题和白色网格背景是比较好看。
    这里写图片描述
    这里写图片描述
    这里写图片描述

    颜色

    颜色一般来说用默认的颜色就好了,而且也比较好看,如果非要设置颜色,可以通过sns.set_palette("husl")设置。
    常用的其他颜色模式还有:

    sns.set_palette("muted")    # 常用
    sns.set_palette("RdBu")
    sns.set_palette("Blues_d")
    sns.set_palette("Set1")
    sns.set_palette("RdBu")

    效果如下图:
    这里写图片描述
    这里写图片描述
    这里写图片描述
    这里写图片描述
    这里写图片描述

    13.后话

    这里只是简单说说seaborn常用的绘图函数而已,看seaborn官网上面有很多好看的图形样例,而这里的函数画出来的哪里有官网的好看啊。
    而且这里也没有说到具体的布局控制,颜色主题等,要想绘制精美的图形,还需要学习具体的参数设定啊。

    不过这里提到的这些简要图形,对于普通的分析快速绘图足够用了。

    使用心得以后补充吧。

    展开全文
  • Python Seaborn教程

    2020-07-13 05:34:52
    Python Seaborn教程 (Python Seaborn Tutorial) Seaborn is a library for making statistical infographics in Python. It is built on top of matplotlib and also supports numpy and pandas data structures. It...

    Python Seaborn教程 (Python Seaborn Tutorial)

    Seaborn is a library for making statistical infographics in Python. It is built on top of matplotlib and also supports numpy and pandas data structures. It also supports statistical units from SciPy.

    Seaborn是一个使用Python制作统计信息图表的库。 它基于matplotlib构建,还支持numpy和pandas数据结构。 它还支持SciPy的统计单位。

    Visualization plays an important role when we try to explore and understand data, Seaborn is aimed to make it easier and the centre of the process. To put in perspective, if we say matplotlib makes things easier and hard things possible, seaborn tries to make that hard easy too, that too in a well-defined way. But seaborn is not an alternative to matplotlib, think of it as a complement to the previous.

    当我们尝试探索和理解数据时,可视化起着重要作用,Seaborn的目标是使其变得更容易并且成为过程的中心。 放眼来看,如果我们说matplotlib使事情变得容易和困难的事情成为可能,seaborn也会尝试以明确的方式使困难变得容易。 但是seaborn并不是matplotlib的替代品,可以认为它是对前者的补充。

    As it is built on top of matplotlib, we will often invoke matplotlib functions directly for simple plots at matplotlib has already created highly efficient programs for it.

    由于它是基于matplotlib构建的,因此我们经常会直接调用matplotlib函数以获取简单的图,因为matplotlib已经为其创建了高效程序。

    The high-level interface of seaborn and customizability and variety of backends for matplotlib combined together makes it easy to generate publication-quality figures.

    python seaborn tutorial

    完美的,可定制的高级界面以及各种matplotlib后端组合在一起,使生成出版物质量数据变得容易。

    为什么选择Seaborn? (Why Seaborn?)

    Seaborn offers a variety of functionality which makes it useful and easier than other frameworks. Some of these functionalities are:

    Seaborn提供了多种功能,使其比其他框架更有用和更容易。 其中一些功能是:

    • A function to plot statistical time series data with flexible estimation and representation of uncertainty around the estimate

      绘制具有灵活估计的统计时间序列数据并在估计周围表示不确定性的功能
    • Functions for visualizing univariate and bivariate distributions or for comparing them between subsets of data

      用于可视化单变量和双变量分布或在数据子集之间进行比较的函数
    • Functions that visualize matrices of data and use clustering algorithms to discover structure in those matrices

      可视化数据矩阵并使用聚类算法发现这些矩阵中的结构的函数
    • High-level abstractions for structuring grids of plots that let you easily build complex visualizations

      用于构建图网格的高级抽象,可让您轻松构建复杂的可视化文件
    • Several built-in themes for styling matplotlib graphics

      Matplotlib图形样式的几个内置主题
    • Tools for choosing color palettes to make beautiful plots that reveal patterns in your data

      用于选择调色板的工具,以绘制精美的图表以显示数据中的图案
    • Tools that fit and visualize linear regression models for different kinds of independent and dependent variables

      拟合和可视化线性回归模型的工具,用于不同种类的自变量和因变量

    Seaborn入门 (Getting Started with Seaborn)

    To get started with Seaborn, we will install it on our machines.

    要开始使用Seaborn,我们将其安装在我们的计算机上。

    安装Seaborn (Install Seaborn)

    Seaborn assumes you have a running Python 2.7 or above platform with NumPY (1.8.2 and above), SciPy(0.13.3 and above) and pandas packages on the devices.

    Seaborn假定您在设备上运行的Python 2.7或更高版本平台具有NumPY(1.8.2和更高版本),SciPy(0.13.3和更高版本)和pandas软件包。

    Once we have these python packages installed we can proceed with the installation. For pip installation, run the following command in the terminal:

    一旦安装了这些python软件包,我们就可以继续安装。 对于pip安装,请在终端中运行以下命令:

    pip install seaborn

    If you like conda, you can also use conda for package installation, run the following command:

    如果您喜欢conda,也可以使用conda进行软件包安装,请运行以下命令:

    conda install seaborn

    Alternatively, you can use pip to install the development version directly from GitHub:

    另外,您可以使用pip直接从GitHub安装开发版本:

    pip install git+https://github.com/mwaskom/seaborn.git

    使用Seaborn (Using Seaborn)

    Once you are done with the installation, you can use seaborn easily in your Python code by importing it:

    安装完成后,可以通过导入在Python代码中轻松使用seaborn:

    import seaborn

    控制人物美学 (Controlling figure aesthetics)

    When it comes to visualization drawing attractive figures is important.

    在可视化方面,吸引人的图形很重要。

    Matplotlib is highly customizable, but it can be complicated at the same time as it is hard to know what settings to tweak to achieve a good looking plot. Seaborn comes with a number of themes and a high-level interface for controlling the look of matplotlib figures. Let’s see it working:

    Matplotlib是高度可定制的,但同时又可能会很复杂,因为很难知道要调整哪些设置才能获得美观的图形。 Seaborn具有许多主题和用于控制matplotlib图形外观的高级界面。 让我们看看它的工作原理:

    #matplotlib inline
    import numpy as np
    import matplotlib as mpl
    import matplotlib.pyplot as plt
    import seaborn as sns
    
    np.random.seed(sum(map(ord, "aesthetics")))
    
    #Define a simple plot function, to plot offset sine waves
    def sinplot(flip=1):
        x = np.linspace(0, 14, 100)
        for i in range(1, 7):
            plt.plot(x, np.sin(x + i * .5) * (7 - i) * flip)
    sinplot()

    This is what the plot looks like with matplotlib defaults:

    seaborn plot defaults

    这是使用matplotlib默认值时的图:

    If you want to switch to seaborn defaults, simply call ‘set’ function:

    如果要切换到默认值,只需调用“设置”功能:

    sns.set()
    sinplot()

    This is how the plot look now:

    seaborn plotting example

    现在是这样的样子:

    Seaborn图样式 (Seaborn figure styles)

    Seaborn provides five preset themes: white grid, dark grid, white, dark, and ticks, each suited to different applications and also personal preferences.

    Seaborn提供了五个预设主题:白色网格,深色网格,白色,深色和刻度,每个主题都适合不同的应用程序以及个人喜好。

    Darkgrid is the default one. The White grid theme is similar but better suited to plots with heavy data elements, to switch to white grid:

    Darkgrid是默认选项。 白色网格主题类似,但更适合于具有大量数据元素的图,以切换到白色网格:

    sns.set_style("whitegrid")
    data = np.random.normal(size=(20, 6)) + np.arange(6) / 2
    sns.boxplot(data=data)

    The output will be:

    seaborn white grid plot

    输出将是:

    For many plots, the grid is less necessary. Remove it by adding this code snippet:

    对于许多地块来说,网格是不必要的。 通过添加以下代码片段将其删除:

    sns.set_style("dark")
    sinplot()

    The plot looks like:

    seaborn dark plot

    情节看起来像:

    Or try the white background:

    或尝试白色背景:

    sns.set_style("white")
    sinplot()

    This time, the background looks like:

    seaborn plot white

    这次,背景看起来像:

    Sometimes you might want to give a little extra structure to the plots, which is where ticks come in handy:

    有时,您可能想给绘图添加一些额外的结构,这是刻度线派上用场的地方:

    sns.set_style("ticks")
    sinplot()

    The plot looks like:

    seaborn tutorial white ticks

    情节看起来像:

    去除轴刺 (Removing axes spines)

    You can call despine function to remove them:

    您可以调用despine函数将其删除:

    sinplot()
    sns.despine()

    The plot looks like:

    seaborn plot without axes spines

    情节看起来像:

    Some plots benefit from offsetting the spines away from the data. When the ticks don’t cover the whole range of the axis, the trim parameter will limit the range of the surviving spines:

    有些图可以从数据中抵消尖峰。 当刻度不覆盖轴的整个范围时,trim参数将限制尚存的刺的范围:

    f, ax = plt.subplots()
    sns.violinplot(data=data)
    sns.despine(offset=10, trim=True)

    The plot looks like:

    seaborn plot offspring axes

    情节看起来像:

    You can also control which spines are removed with additional arguments to despine:

    您还可以使用despine的附加参数来控制删除哪些刺:

    sns.set_style("whitegrid")
    sns.boxplot(data=data, palette="deep")
    sns.despine(left=True)

    The plot looks like:

    情节看起来像:

    临时设置图形样式 (Temporarily setting figure style)

    axes_style() comes to help when you need to set figure style, temporarily:

    当您需要临时设置图形样式时, axes_style()会为您提供帮助:

    with sns.axes_style("darkgrid"):
       plt.subplot(211)
       sinplot()
    plt.subplot(212)
    sinplot(-1)

    The plot looks like:

    seaborn style temporary settings

    情节看起来像:

    海洋风格的主要元素 (Overriding elements of the seaborn styles)

    A dictionary of parameters can be passed to the rc argument of axes_style() and set_style() in order to customize figures.

    可以将参数字典传递给axes_style()set_style()rc参数,以便自定义图形。

    Note: Only the parameters that are part of the style definition through this method can be overridden. For other purposes, you should use set() as it takes all the parameters.

    注意:仅覆盖通过此方法作为样式定义一部分的参数。 出于其他目的,应使用set()因为它需要所有参数。

    In case you want to see what parameters are included, just call the function without any arguments, an object is returned:

    如果要查看包含哪些参数,只需调用不带任何参数的函数,就会返回一个对象:

    sns.axes_style()
    
    {'axes.axisbelow': True,
    'axes.edgecolor': '.8',
    'axes.facecolor': 'white',
    'axes.grid': True,
    'axes.labelcolor': '.15',
    'axes.linewidth': 1.0,
    'figure.facecolor': 'white',
    'font.family': [u'sans-serif'],
    'font.sans-serif': [u'Arial',
     u'DejaVu Sans',
     u'Liberation Sans',
     u'Bitstream Vera Sans',
     u'sans-serif'],
    'grid.color': '.8',
    'grid.linestyle': u'-',
    'image.cmap': u'rocket',
    'legend.frameon': False,
    'legend.numpoints': 1,
    'legend.scatterpoints': 1,
    'lines.solid_capstyle': u'round',
    'text.color': '.15',
    'xtick.color': '.15',
    'xtick.direction': u'out',
    'xtick.major.size': 0.0,
    'xtick.minor.size': 0.0,
    'ytick.color': '.15',
    'ytick.direction': u'out',
    'ytick.major.size': 0.0,
    'ytick.minor.size': 0.0}

    You can then set different versions of these parameters:

    然后,您可以设置这些参数的不同版本:

    sns.set_style("darkgrid", {"axes.facecolor": ".9"})
    sinplot()

    The plot looks like:

    seaborn example setting style

    情节看起来像:

    缩放图元素 (Scaling plot elements)

    Let’s try to manipulate scale of the plot. We can reset the default parameters by calling set():

    让我们尝试操纵绘图的比例。 我们可以通过调用set()来重置默认参数:

    sns.set()

    The four preset contexts are – paper, notebook, talk and poster. The notebook style is the default, and was used in the plots above:

    四个预设上下文是–纸,笔记本,谈话和海报。 笔记本样式是默认样式,并在上面的图中使用:

    sns.set_context("paper")
    sinplot()

    The plot looks like:

    seaborn paper style

    情节看起来像:

    sns.set_context("talk")
    sinplot()

    The plot looks like:

    seaborn talk style

    情节看起来像:

    结论 (Conclusion)

    In this lesson, we have seen that Seaborn makes it easy to manipulate different graph plots. We have seen examples of scaling and changing context.

    在本课程中,我们看到了Seaborn可以轻松操纵不同的图形。 我们已经看到了扩展和更改上下文的示例。

    Seaborn makes it easy to visualize data in an attractive manner and make it easier to read and understand.

    通过Seaborn,可以轻松以有吸引力的方式可视化数据,并使其更易于阅读和理解。

    翻译自: https://www.journaldev.com/18583/python-seaborn-tutorial

    展开全文
  • python seaborn模块怎么样安装及使用发布时间:2020-11-23 09:52:54来源:亿速云阅读:53作者:小新这篇文章主要介绍python seaborn模块怎么样安装及使用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴...

    python seaborn模块怎么样安装及使用

    发布时间:2020-11-23 09:52:54

    来源:亿速云

    阅读:53

    作者:小新

    这篇文章主要介绍python seaborn模块怎么样安装及使用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

    首先是进行安装seaborn模块pip install seaborn

    上文已经告知大家seaborn模块是做图形的,那我们直接以一个图形为切入点,学习了解:

    图示如下:

    df0fcee10f07c4b1a13d4367da0292f5.png

    实现代码步骤:

    直方图import matplotlib.pyplot as plt

    import seaborn as sns

    %matplotlib inline

    titanic=sns.load_dataset('titanic')

    #sample方法

    titanic.sample(10)

    丰富信息

    # 通过'bins'参数设定数据片段的数量sns.distplot(age1,bins=30,kde=False)

    条形图import seaborn as sns

    import matplotlib.pyplot as plt

    %matplotlib inline

    titanic=sns.load_dataset('titanic')

    #'survived'为y轴,传入'titanic'数据

    sns.barplot(x='class',y='survived',data=titanic)

    以上是python seaborn模块怎么样安装及使用的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注亿速云行业资讯频道!

    展开全文
  • 方法import pandas as pdimport numpy as npimport seaborn as snsdf = pd.DataFrame(np.random.randn(50).reshape(10,5))corr = df.corr()sns.heatmap(corr, cmap='Blues', annot=True)将矩阵型简化为对角矩阵型:...
  • Python seaborn pairplot

    2021-01-12 14:01:27
    Python seaborn pairplot import 关键 package from matplotlib import pyplot as plt import pandas as pd import seaborn as sns import numpy as np import matplotlib %matplotlib inline 导入数据(数据瞎编...
  • 虽说是比mat(简称)进阶的更高级,但是实际上,它确实最简单好用的,因为它真正意义上能够做到,用最极简的代码,编写最优美的图形,想必大家都知道了吧,没错就是seaborn模块,让我们来学习怎么去使用吧~首先是进行...
  • 主要介绍了python seaborn heatmap可视化相关性矩阵实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • Python笔记——python seaborn画图

    千次阅读 多人点赞 2018-03-31 10:48:50
    python seaborn画图 以前觉得用markdown写图文混排的文字应该很麻烦,后来发现CSDN的markdown真是好用的。 在做分析时候,有时需要画几个图看看数据分布情况,但总记不住python的绘图函数。今天有空顺便整理下...
  • python seaborn

    2018-03-12 16:14:41
    python seaborn画图Seaborn其实是在matplotlib的基础上进行了更高级的API封装,从而使得作图更加容易,在大多数情况下使用seaborn就能做出很具有吸引力的图,而使用matplotlib能制作具有更多特色的图。应该把Seaborn...
  • python seaborn 画图

    2017-08-02 22:57:00
    pythonseaborn画图 59888745@qq.com 2017.08.02 distplot( ) kdeplot( ) distplot( )为hist加强版, kdeplot( )为密度曲线图 箱型图 boxplot( ) 联合分布jointplot( ) 热点图heatmap( ) pairplot( ) ...
  • Python seaborn factorplot 图表有何含义?如何计算? 如plot 如何计算得出?plot 上的线如何计算,有何含义?
  • Python seaborn 条形图

    2019-07-12 20:43:39
    Python seaborn 条形图 import seaborn as sns name_list = [] time_list = [] plt.grid() plt.xlabel('名字') plt.ylabel('本周迟到时长/min') plt.title('%s迟到榜' % week_index) sns.barplot(x=name_list, y=...
  • python seaborn画图:https://blog.csdn.net/suzyu12345/article/details/69029106 Python数据可视化—seaborn简介和实例:https://blog.csdn.net/qq_34264472/article/details/53814653 Seaborn(sns)官方文档学习...
  • 转载-【python seaborn画图】

    千次阅读 2018-09-01 20:03:24
    python seaborn画图 以前觉得用markdown写图文混排的文字应该很麻烦,后来发现CSDN的markdown真是好用的。 在做分析时候,有时需要画几个图看看数据分布情况,但总记不住python的绘图函数。今天有空顺便整理下...
  • python seaborn 绘图入门 : 回归模型 Lmplot 2017-08-13 11:12 ...
  • 1. 目的了解python第三方绘图包seaborn,从常用绘图实例开始,快速体验seaborn绘图。建议用时: 10分钟绘图例子: 12个每个例子代码量: 1-6行, 90%仅1行1.1 环境ipython notebook安装python包:seaborn,matplotlib,...
  • python seaborn heatmap可视化相关性矩阵

    千次阅读 2019-06-18 17:15:43
    python seaborn heatmap可视化相关性矩阵方法 方法 import pandas as pd import numpy as np import seaborn as sns df = pd.DataFrame(np.random.randn(50).reshape(10,5)) corr = df.corr() sns.heatmap(corr, ...
  • python seaborn 共享x轴画图 数据可视化

    千次阅读 2017-10-23 18:36:28
    python seaborn how to share x axis? 数据可视化
  • Python Seaborn: 常见的画图与保存方法总结 Scatterplot 散点图 绘图与保存的方法: data = sns.load_dataset("tips") filepath = 'C:/Users' fig_name = 'scatterplot.png' # fig_path为想要存入的文件夹或...
  • python seaborn画热力图,自定义颜色渐变 默认的颜色,,实在是有点不好看 所以先附上改了以后的效果图 方法是使用 LinearSegmentedColormap 自定义颜色渐变 from matplotlib.colors import ...
  • 今天为大家分享的小技巧是python的可视化画图库Seaborn。相信很多小侠客用过matplotlib、pyecharts等可视化库,可是为什么还要介绍Seaborn呢?因为它修复了上述两个库的一些缺点,比如Seaborn提供了大量的高级接口和...
  • 我是Python的新手,也是seaborn的新手 .我有一个名为df的pandas数据框,如下所示:TIMESTAMP ACT_TIME_AERATEUR_1_F1 ACT_TIME_AERATEUR_1_F2 ACT_TIME_AERATEUR_1_F3 ACT_TIME_AERATEUR_1_F4 ACT_TIME_AERATEUR_1_...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,043
精华内容 2,817
关键字:

pythonseaborn

python 订阅