读取数据并可视化——seaborn
一、语法
DataFrame.plot( )函数:
#scatterplot参数
seaborn.scatterplot(x=None, y=None, hue=None, style=None, size=None,
data=None, palette=None, hue_order=None, hue_norm=None, sizes=None,
size_order=None, size_norm=None, markers=True, style_order=None,
x_bins=None, y_bins=None, units=None, estimator=None, ci=95, n_boot=1000,
alpha='auto', x_jitter=None, y_jitter=None, legend='brief', ax=None, **kwargs)
- x和y:表示标签或者位置,用来指定显示的索引,默认为None
- kind:表示绘图的类型,默认为line,折线图
- line:折线图
- bar/barh:柱状图(条形图),纵向/横向
- pie:饼状图
- hist:直方图(数值频率分布)
- box:箱型图
- kde:密度图,主要对柱状图添加Kernel 概率密度线
- area:区域图(面积图)
- scatter:散点图
- hexbin:蜂巢图
- ax:子图,可以理解成第二坐标轴,默认None
- subplots:是否对列分别作子图,默认False
- sharex:共享x轴刻度、标签。如果ax为None,则默认为True,如果传
- ax,则默认为False
- sharey:共享y轴刻度、标签
- layout:子图的行列布局,(rows, columns)
- figsize:图形尺寸大小,(width, height)
- use_index:用索引做x轴,默认True
- title:图形的标题
- grid:图形是否有网格,默认None
- legend:子图的图例
- style:对每列折线图设置线的类型,list or dict
- logx:设置x轴刻度是否取对数,默认False
- loglog:同时设置x,y轴刻度是否取对数,默认False
- xticks:设置x轴刻度值,序列形式(比如列表)
yticks - xlim:设置坐标轴的范围。数值,列表或元组(区间范围)
- rot:轴标签(轴刻度)的显示旋转度数,默认None
- fontsize : int, default None#设置轴刻度的字体大小
- colormap:设置图的区域颜色
- colorbar:柱子颜色
- position:柱形图的对齐方式,取值范围[0,1],默认0.5(中间对齐)
- table:图下添加表,默认False。若为True,则使用DataFrame中的数据绘制表格
- stacked:是否堆积,在折线图和柱状图中默认为False,在区域图中默认为True
- sort_columns:对列名称进行排序,默认为False
- secondary_y:设置第二个y轴(右辅助y轴),默认为False
- mark_right : 当使用secondary_y轴时,在图例中自动用“(right)”标记列标签 ,默认True
- x_compat:适配x轴刻度显示,默认为False。设置True可优化时间刻度的显示
二、Seaborn库
Seaborn是一种基于matplotlib的图形可视化库,已经提前定义好了一套自己的风格,也封装了一系列方便的绘图函数,使用Seaborn绘图比matplotlib更好看,更简单
1、安装
通过pip或anaconda:
pip install seaborn
conda install seaborn
官方文档:
http://seaborn.pydata.org/tutorial.html
三、Relational plots(关系图)
主要讨论的是三个seaborn函数。我们最常用的是relplot()。这是一个图形级函数使用两种常用方法可视化统计关系:散点图(scatter plots)和线图(line plots)
1. scatterplot() (与kind="scatter";默认值)
2. lineplot() (与kind="line")
首先,导入需要的各种模块:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
sns.set(style="darkgrid") #这是seaborn默认的风格
1、scatterplot(散点图)
散点图是统计可视化的重要组成部分。它使用点云来描述两个变量的联合分布,其中每个点代表数据集中的一个观察。这种描绘可以推断出大量关于它们之间是否有任何有意义的关系的信息。
在seaborn中有几种(后面介绍)绘制散点图的方法,当两个变量都是数字时,应该使用的最基本的是scatterplot()功能。在Categorical plots(分类图)中,我们将看到使用散点图可视化分类数据的专门工具。
#数据来源可在seaborn的GitHub上查找,数据下载连接https://github.com/mwaskom/seaborn-data
df=pd.read_csv('D:/python/学习笔记/tips.csv')
sns.scatterplot(x="total_bill",y="tip",data=df)
1.1按另一个变量分组(hue参数起了作用)
不同类型的方式(style),点的大小(size),并显示具有不同颜色的组:
ax = sns.scatterplot(x="total_bill", y="tip",hue="day",
style="time",size='size',data=df)
1.2 添加col和row参数
可以将图根据某个属性的值的个数分割成多列或者多行,比如在以上图的基础上想把lunch和dinner分割成两个图来现实:
sns.relplot(x="total_bill",y="tip",hue="day",col="time",data=df)
也可以在row上添加一个新的变量,比如把性别按照行显示出来:
sns.relplot(x="total_bill",y="tip",hue="day",col="time",row="sex",data=df)
1.3指定具体的列
有时候图会有很多,默认情况下会在一行中全部显示出来,那么我们可以通过col_wrap来指定具体多少列
sns.relplot(x="total_bill",y="tip",col="day",col_wrap=2,data=df)
2、lineplot(线图)
fmri = sns.load_dataset("fmri")
ax = sns.lineplot(x="timepoint", y="signal", data=fmri)
#阴影是默认的置信区间,可设置ci=0,将其去除
添加参数后:
#使用标记而不是破折号来识别组
ax = sns.lineplot(x="timepoint", y="signal",hue="event", style="event",
markers=True, dashes=False, data=fmri)
3、relplot(关系图)
relplot(关系图)可以看做是lineplot和scatterplot的归约,可以通过kind参数来指定画什么图形,重要参数解释如下:
kind:默认scatter(散点图),也可以选择kind=‘line’(线图)
sizes:List、dict或tuple,可选,简单点就是图片大小,注意和size区分
tips = sns.load_dataset("tips")
g = sns.relplot(x="total_bill", y="tip", data=tips)
#两者效果一模一样
ax = sns.scatterplot(x="total_bill", y="tip", data=tips)
其他参数设置:
g = sns.relplot(x="total_bill", y="tip", hue="time", size="size",
palette=["b", "r"], sizes=(10, 100),col="time",row='sex', data=tips)
四、Categorical plots(分类图)
1、 Categorical scatterplots(分类散点图)
1.1stripplot(分布散点图)
stripplot(分布散点图)的意思就是按照不同类别对样本数据进行分布散点图绘制。stripplot(分布散点图)一般并不单独绘制,它常常与boxplot和violinplot联合起来绘制,作为这两种图的补充。
seaborn.stripplot(x=None, y=None, hue=None, data=None, order=None,
hue_order=None, jitter=True, dodge=False, orient=None, color=None,
palette=None, size=5, edgecolor='gray', linewidth=0, ax=None, **kwargs)
- x,y,data:输入数据可以多种格式传递,在大多数情况下,使用Numpy或Python对象是可能的,但是更可取的是pandas对象,因为相关的名称将用于对轴进行注释。此外,还可以对分组变量使用分类类型来控制情节元素的顺序
- order:用order参数进行筛选分类类别,例如:order=[‘sun’,‘sat’]
- jitter:抖动项,表示抖动程度,可以使float,或者True
- dodge:重叠区域是否分开,当使用hue时,将其设置为True,将沿着分类轴将不同色调级别的条带分开
- orient:“v” | “h”,verti