seaborn分类数据可视:散点图|箱型图|小提琴图|lv图|柱状图|折线图

一、散点图stripplot( ) 与swarmplot()

1.分类散点图stripplot( ) 

用法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 分类字段和分布统计字段
  • hue 在x分类的基础上进行二次分类的字段
  • data 源数据
  • order 图表中显示的分类
  • jitter 当点数据重合较多时用该参数做一些调整,可以设置为True或者间距0.1,否则会有重合的点
  • dodge 如果有二次分类,二次分类是否拆分显示
tips = sns.load_dataset("tips") #导入系统数据
print(tips.head())
print(tips['day'].value_counts())
   total_bill   tip     sex smoker  day    time  size
0       16.99  1.01  Female     No  Sun  Dinner     2
1       10.34  1.66    Male     No  Sun  Dinner     3
2       21.01  3.50    Male     No  Sun  Dinner     3
3       23.68  3.31    Male     No  Sun  Dinner     2
4       24.59  3.61  Female     No  Sun  Dinner     4
Sat     87
Sun     76
Thur    62
Fri     19
Name: day, dtype: int64
输出结果

 

fig = plt.figure(figsize=(15,10))
ax1 = plt.subplot(221)
# 对data数据按day分类,统计total_bill的分布,如果点重合较多适当显示开
sns.stripplot(x="day", y="total_bill",  data=tips, jitter = True, size = 5, edgecolor = 'w',linewidth=1, marker = 'o', ax=ax1)ax2 = plt.subplot(222)
# 对data数据按day分类,统计total_bill的分布,并且图表中只显示按day分类的中的Sat和Sun
sns.stripplot(x="day", y="total_bill", data=tips,jitter = True, order = ['Sat','Sun'],ax=ax2) ax3 = plt.subplot(223)
# 对data数据按sex分类后再按day分类,统计total_bill的分布
sns.stripplot(x="sex", y="total_bill", hue="day",data=tips, jitter=True,ax = ax3)ax4 = plt.subplot(224)
# 对data数据按sex分类后再按day分类,统计total_bill的分布,并且不同的day拆分显示
sns.stripplot(x="sex", y="total_bill", hue="day",data=tips, jitter=True,palette="Set2",dodge=True,ax=ax4) 

2.分簇散点图swarmplot()

用法swarmplot(x=None, y=None, hue=None, data=None, order=None, hue_order=None,dodge=False, orient=None, color=None,

                      palette=None,size=5, edgecolor="gray", linewidth=0, ax=None, **kwargs)

swarmplot()除了没有jitter参数,其他用法类似stripplot()。

fig = plt.figure(figsize=(20,5))
ax1 = plt.subplot(141)
# 对data数据按day分类,统计total_bill的分布,如果点重合较多适当显示开
sns.swarmplot(x="day", y="total_bill",  data=tips,  size = 5, edgecolor = 'w',linewidth=1, marker = 'o', ax=ax1)ax2 = plt.subplot(142)
# 对data数据按day分类,统计total_bill的分布,并且图表中只显示按day分类的中的Sat和Sun
sns.swarmplot(x="day", y="total_bill", data=tips, order = ['Sat','Sun'],ax=ax2) ax3 = plt.subplot(143)
# 对data数据按sex分类后再按day分类,统计total_bill的分布
sns.swarmplot(x="sex", y="total_bill", hue="day",data=tips, ax = ax3)ax4 = plt.subplot(144)
# 对data数据按sex分类后再按day分类,统计total_bill的分布,并且不同的day拆分显示
sns.swarmplot(x="sex", y="total_bill", hue="day",data=tips, palette="Set2",dodge=True,ax=ax4) 

二、箱型图boxplot()

boxplot(x=None, y=None, hue=None, data=None, order=None, hue_order=None,orient=None, color=None, palette=None,

             saturation=.75,width=.8, dodge=True, fliersize=5, linewidth=None,whis=1.5, notch=False, ax=None, **kwargs)

  • x,y 分类字段和分布统计字段
  • hue 在x分类的基础上进行二次分类的字段
  • data 源数据
  • order 图表中显示的分类
  • dodge 如果有二次分类,二次分类是否拆分显示
  • width 箱的间隔的比例,值越大间隔越小
  • filtersize  异常点大小
  • whis 设置IQR
  • notch 是否以中值做凹槽
fig = plt.figure(figsize=(12,5))ax1 = plt.subplot(121)
sns.boxplot(x="day", y="total_bill", data=tips,linewidth = 2, width = 0.8, fliersize = 10, palette = 'hls', whis = 1.5, notch = True )
sns.swarmplot(x="day", y="total_bill", data=tips,color ='g',size = 3,alpha = 0.8)  #在箱型图上做分簇散点图

ax2 = plt.subplot(122)
sns.boxplot(x="day", y="total_bill", data=tips, hue = 'smoker', order = ['Sat','Sun'],palette = 'Reds') #根据day分类,再根据smkker分类

三、小提琴图violinplot()

violinplot(x=None, y=None, hue=None, data=None, order=None, hue_order=None,bw="scott", cut=2,

               scale="area", scale_hue=True, gridsize=100, width=.8, inner="box", split=False, dodge=True,

               orient=None,linewidth=None, color=None, palette=None, saturation=.75,ax=None, **kwargs)

  • x,y 分类字段和分布统计字段
  • hue 在x分类的基础上进行二次分类的字段
  • data 源数据
  • order 图表中显示的分类
  • dodge 如果有二次分类,二次分类的多个小提琴位置是否错开,默认为True,False则多个小提琴会重复  (dodge=True与split=False效果相同)
  • split 如果有二次分类,二次分类是否拆分整个提琴,默认为False显示为多个独立的小提琴,True则显示为一个小提琴,左右两侧表示二次分类
  • scale = 'area' 设置小提琴图的宽度,area-保持小提琴面积相同,count-按照样本数量决定宽度,width-宽度一样
  • gridsize = 100 设置小提琴图边线的平滑度,越高越平滑
  • inner = 'box' 设置内部显示类型 → “box”箱型图, “quartile”分位数, “point”点, “stick”, None
  • bw = 0.8 # 控制拟合程度,'scott'、'silverman'或者一个浮点数,一般可以不设置
fig = plt.figure(figsize=(20,5))ax1 = plt.subplot(141)
sns.violinplot(x="day",y="total_bill",data=tips,linewidth=2,width=0.8,palette='hls',scale= 'area',gridsize=50,inner='box')  ax2 = plt.subplot(142)
sns.violinplot(x="day",y="total_bill",data=tips,hue = 'smoker',palette="muted",dodge=False,inner="point")#二次分类小提琴位置不错开

ax3 = plt.subplot(143)
sns.violinplot(x="day",y="total_bill",data=tips,hue = 'smoker',palette="muted",split=False,inner="stick")#二次分类不拆分小提琴,显示为多个独立小提琴

ax4 = plt.subplot(144)
sns.violinplot(x="day",y="total_bill",data=tips,hue = 'smoker',palette="muted",split=True,inner="quartile")#二次分类拆分小提琴,左右两侧分别表示二次

小提琴图与分簇散点图结合sns.violinplot()+ sns.swarmplot()

sns.violinplot(x="day", y="total_bill", data=tips, palette = 'hls',alpha=0.5, inner = None)
sns.swarmplot(x="day", y="total_bill", data=tips, color="w")

四、增强箱图boxenplot()

boxenplot(x=None, y=None, hue=None, data=None, order=None, hue_order=None,orient=None, color=None,

                palette=None, saturation=.75,width=.8,dodge=True, k_depth='proportion', linewidth=None,

                scale='exponential', outlier_prop=None, ax=None, **kwargs)

(lv图表使用boxenplot(),lvplot()即将被遗弃)

  • x,y 分类字段和分布统计字段
  • hue 在x分类的基础上进行二次分类的字段
  • data 源数据
  • order 图表中显示的分类
  • dodge 如果有二次分类,二次分类的多个小提琴位置是否错开,默认为True,False则多个小提琴会重复  (dodge=True与split=False效果相同)
  • scale = 'area' 设置lv图的宽度,“linear”、“exonential”、“area”   (一般scale和k_depth保持默认就好)
  • k_depth = 'proportion', # 设置框的数量 → “proportion”、“tukey”、“trustworthy”
  • width 箱之间间隔
sns.lvplot(x="day", y="total_bill", data=tips, palette="mako", width = 0.8, scale = 'area',k_depth = 'proportion')
sns.swarmplot(x="day", y="total_bill", data=tips, color ='k',size = 5)

五、柱状图barplot() 

seaborn中的柱状图不是单纯的表示数量,而是表示了一个统计标准和对应的置信区间。

barplot(x=None, y=None, hue=None, data=None, order=None, hue_order=None,estimator=np.mean, ci=95, 
           n_boot=1000, units=None,orient=None, color=None, palette=None, saturation=.75,errcolor=".26", 
           errwidth=None, capsize=None, dodge=True,ax=None, **kwargs)

  • x,y 分类字段和分布统计字段
  • hue 在x分类的基础上进行二次分类的字段
  • data 源数据
  • order 图表中显示的分类
  • estimater 柱状图表示的统计量,默认和常使用均值
  • ci 置信区间的误差,0-100之内、或sd标准差,或None,默认为95
  • saturation 颜色饱和度
  • errcolor与errwidth 误差线颜色与宽度
  • capsize 误差线延长宽度
  • dodge 如果有二次分类,二次分类的多个多个柱状图位置是否错开
  • edgecolor 柱子的边框颜色
#导入泰坦尼克号、小费和汽车事故的3个表的数据结构,在不同窗口显示前5行
titanic = sns.load_dataset("titanic")
titanic.head()
tips = sns.load_dataset('tips') #
tips.head()
crashes = sns.load_dataset("car_crashes")#
crashes.head()

 

      

 

fig = plt.figure(figsize=(15,4))
ax1 = plt.subplot(131)  #泰坦尼克,在性别分类的基础上再按舱级别分类,统计生还率
sns.barplot(x="sex",y="survived",hue="class",data=titanic,palette = 'hls',capsize = 0.05,saturation=.8,errcolor = 'gray',errwidth = 2,ci = 'sd')
ax2 = plt.subplot(132)  #小费,在日期分类的基础上再按性别分类,统计给的小费,置信区间的误差为标准差
sns.barplot(x="day", y="total_bill", hue="sex", data=tips,edgecolor = 'white',errcolor='gray',capsize=0.1,ci='sd')
ax3 = plt.subplot(133)  #小费,同上,置信区间的误差为默认的95
sns.barplot(x="day", y="total_bill", hue="sex", data=tips,edgecolor = 'white',errcolor='gray',capsize=0.1)

crashes = sns.load_dataset("car_crashes").sort_values("total", ascending=False)
f,ax = plt.subplots(figsize=(8, 20))# 创建图表

sns.set_color_codes("pastel")
sns.barplot(x="total", y="abbrev", data=crashes,label="Total", color='b',edgecolor = 'w')# 设置第一个柱状图
sns.set_color_codes("muted")
sns.barplot(x="alcohol", y="abbrev", data=crashes, label="Alcohol-involved",color='b',edgecolor = 'w')# 设置第二个柱状图

ax.legend(ncol=2, loc="lower right")
sns.despine(left=True, bottom=True)

六、计数柱状图countplot() 

countplot(x=None, y=None, hue=None, data=None, order=None, hue_order=None,orient=None, color=None,
                palette=None, saturation=.75,dodge=True, ax=None, **kwargs)

  • x,y 同时表示分类字段和显示方向,即在x轴上或在y轴上对指定的字段进行计数显示
  • hue 在x分类或者y分类的基础上进行二次分类的字段
  • data 源数据
  • order 图表中显示的分类
  • dodge 如果有二次分类,二次分类的多个多个柱状图位置是否错开
  • edgecolor 柱子的边框颜色
fig = plt.figure(figsize=(12,4))
ax1 = plt.subplot(121)
sns.countplot(x="day", hue="sex", data=tips, palette = 'muted') #竖直显示,在日期分类的基础上再按性别分类
ax2 = plt.subplot(122)
sns.countplot(y="day", hue="sex", data=tips, palette = 'muted') #水平显示

七、折线图pointbar()

折线图pointbar()和barplot()的用法类似,只是barplot()用柱状图表示均值,而pointbar()用一个点表示了均值。

pointplot(x=None, y=None, hue=None, data=None, order=None, hue_order=None,estimator=np.mean, ci=95,
              n_boot=1000, units=None,markers="o", linestyles="-", dodge=False, join=True, scale=1,
              orient=None, color=None, palette=None, errwidth=None,capsize=None, ax=None, **kwargs)

  • x,y 分类字段和分布统计字段
  • hue 在x分类的基础上进行二次分类的字段
  • data 源数据
  • order 图表中显示的分类
  • estimater 柱状图表示的统计量,默认和常使用均值
  • ci 置信区间的误差,0-100之内、或sd标准差,或None,默认为95
  • marker 均值的表示形式
  • errwidth 误差线颜色与宽度
  • capsize 误差线延长宽度
  • dodge 如果有二次分类,二次分类的多个线是否分开
  • joint 是否连线
sns.pointplot(x="day",y="total_bill",hue = 'sex',data=tips,palette = 'hls',dodge = True,join = True,markers=["o", "x"],linestyles=["-", "--"])
tips.groupby(['day','sex']).mean()['total_bill']

 

转载于:https://www.cnblogs.com/Forever77/p/11405915.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/391558.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据图表可视化_数据可视化十大最有用的图表

数据图表可视化分析师每天使用的最佳数据可视化图表列表。 (List of best data visualization charts that Analysts use on a daily basis.) Presenting information or data in a visual format is one of the most effective ways. Researchers have proved that the human …

javascript实现自动添加文本框功能

转自:http://www.cnblogs.com/damonlan/archive/2011/08/03/2126046.html 昨天,我们公司的网络小组决定为公司做一个内部的网站,主要是为员工比如发布公告啊、填写相应信息、投诉、问题等等需求。我那同事给了我以下需求: 1.点击一…

从Mysql slave system lock延迟说开去

本文主要分析 sql thread中system lock出现的原因,但是笔者并明没有系统的学习过master-slave的代码,这也是2018年的一个目标,2018年我都排满了,悲剧。所以如果有错误请指出,也作为一个笔记用于后期学习。同时也给出笔…

接facebook广告_Facebook广告分析

接facebook广告Is our company’s Facebook advertising even worth the effort?我们公司的Facebook广告是否值得努力? 题: (QUESTION:) A company would like to know if their advertising is effective. Before you start, yes…. Facebook does ha…

seaborn线性关系数据可视化:时间线图|热图|结构化图表可视化

一、线性关系数据可视化lmplot( ) 表示对所统计的数据做散点图,并拟合一个一元线性回归关系。 lmplot(x, y, data, hueNone, colNone, rowNone, paletteNone,col_wrapNone, height5, aspect1,markers"o", sharexTrue,shareyTrue, hue_orderNone, col_orde…

eda可视化_5用于探索性数据分析(EDA)的高级可视化

eda可视化Early morning, a lady comes to meet Sherlock Holmes and Watson. Even before the lady opens her mouth and starts telling the reason for her visit, Sherlock can tell a lot about a person by his sheer power of observation and deduction. Similarly, we…

Hyperledger Fabric 1.0 从零开始(十二)——fabric-sdk-java应用

Hyperledger Fabric 1.0 从零开始(十)——智能合约(参阅:Hyperledger Fabric Chaincode for Operators——实操智能合约) Hyperledger Fabric 1.0 从零开始(十一)——CouchDB(参阅&a…

css跑道_如何不超出跑道:计划种子的简单方法

css跑道There’s lots of startup advice floating around. I’m going to give you a very practical one that’s often missed — how to plan your early growth. The seed round is usually devoted to finding your product-market fit, meaning you start with no or li…

熊猫数据集_为数据科学拆箱熊猫

熊猫数据集If you are already familiar with NumPy, Pandas is just a package build on top of it. Pandas provide more flexibility than NumPy to work with data. While in NumPy we can only store values of single data type(dtype) Pandas has the flexibility to st…

JAVA基础——时间Date类型转换

在java中有六大时间类,分别是: 1、java.util包下的Date类, 2、java.sql包下的Date类, 3、java.text包下的DateFormat类,(抽象类) 4、java.text包下的SimpleDateFormat类, 5、java.ut…

LeetCode第五天

leetcode 第五天 2018年1月6日 22.(566) Reshape the Matrix JAVA class Solution {public int[][] matrixReshape(int[][] nums, int r, int c) {int[][] newNums new int[r][c];int size nums.length*nums[0].length;if(r*c ! size)return nums;for(int i0;i<size;i){ne…

matplotlib可视化_使用Matplotlib改善可视化设计的5个魔术技巧

matplotlib可视化It is impossible to know everything, no matter how much our experience has increased over the years, there are many things that remain hidden from us. This is normal, and maybe an exciting motivation to search and learn more. And I am sure …

robot:循环遍历数据库查询结果是否满足要求

使用list类型变量{}接收查询结果&#xff0c;再for循环遍历每行数据&#xff0c;取出需要比较的数值 转载于:https://www.cnblogs.com/gcgc/p/11424114.html

rm命令

命令 ‘rm’ &#xff08;remove&#xff09;&#xff1a;删除一个目录中的一个或多个文件或目录&#xff0c;也可以将某个目录及其下属的所有文件及其子目录均删除掉 语法&#xff1a;rm&#xff08;选项&#xff09;&#xff08;参数&#xff09; 默认会提示‘是否’删除&am…

感知器 机器学习_机器学习感知器实现

感知器 机器学习In this post, we are going to have a look at a program written in Python3 using numpy. We will discuss the basics of what a perceptron is, what is the delta rule and how to use it to converge the learning of the perceptron.在本文中&#xff0…

Python之集合、解析式,生成器,函数

一 集合 1 集合定义&#xff1a; 1 如果花括号为空&#xff0c;则是字典类型2 定义一个空集合&#xff0c;使用set 加小括号使用B方式定义集合时&#xff0c;集合内部的数必须是可迭代对象&#xff0c;数值类型的不可以 其中的值必须是可迭代对象&#xff0c;其中的元素必须是可…

python:如何传递一个列表参数

转载于:https://www.cnblogs.com/gcgc/p/11426356.html

curl的安装与简单使用

2019独角兽企业重金招聘Python工程师标准>>> windows 篇&#xff1a; 安装篇&#xff1a; 我的电脑版本是windows7,64位&#xff0c;对应的curl下载地址如下&#xff1a; https://curl.haxx.se/download.html 直接找到下面的这个版本&#xff1a; curl-7.57.0.tar.g…

gcc 编译过程

gcc 编译过程从 hello.c 到 hello(或 a.out)文件&#xff0c; 必须历经 hello.i、 hello.s、 hello.o&#xff0c;最后才得到 hello(或a.out)文件&#xff0c;分别对应着预处理、编译、汇编和链接 4 个步骤&#xff0c;整个过程如图 10.5 所示。 这 4 步大致的工作内容如下&am…

虎牙直播电影一天收入_电影收入

虎牙直播电影一天收入“美国电影协会(MPAA)的首席执行官J. Valenti提到&#xff1a;“没有人能告诉您电影在市场上的表现。 直到电影在黑暗的剧院里放映并且银幕和观众之间都散发出火花。 (“The CEO of Motion Picture Association of America (MPAA) J. Valenti mentioned th…