Python图表数据可视化Seaborn:2. 分类数据可视化

Stella981
• 阅读 856

1. 分类数据可视化 - 分类散点图

stripplot( ) / swarmplot( )

sns.stripplot(x="day",y="total_bill",data=tips,jitter = True, size = 5, edgecolor = 'w',linewidth=1,marker = 'o')

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
% matplotlib inline

sns.set_style("whitegrid")
sns.set_context("paper")
# 设置风格、尺度

import warnings
warnings.filterwarnings('ignore') 
# 不发出警告

# 1、stripplot()
# 按照不同类别对样本数据进行分布散点图绘制

tips = sns.load_dataset("tips")
print(tips.head())
# 加载数据print(tips['day'].value_counts())
sns.stripplot(x="day",          # x → 设置分组统计字段
              y="total_bill",   # y → 数据分布统计字段
              # 这里xy数据对调,将会使得散点图横向分布
              data=tips,        # data → 对应数据
              jitter = True,    # jitter → 当点数据重合较多时,用该参数做一些调整,也可以设置间距如:jitter = 0.1
              size = 5, edgecolor = 'w',linewidth=1,marker = 'o'  # 设置点的大小、描边颜色或宽度、点样式
              )

Python图表数据可视化Seaborn:2. 分类数据可视化

Python图表数据可视化Seaborn:2. 分类数据可视化

1.1 stripplot()

  hue参数可再分类

# 1、stripplot() 通过hue参数再分类

sns.stripplot(x="sex", y="total_bill", hue="day",
              data=tips, jitter=True)

Python图表数据可视化Seaborn:2. 分类数据可视化

# 1、stripplot() 设置调色盘

sns.stripplot(x="sex", y="total_bill", hue="day",
              data=tips, jitter=True,
              palette="Set2",  # 设置调色盘
              dodge=True,  # 是否拆分
             )

Python图表数据可视化Seaborn:2. 分类数据可视化

# 1、stripplot() 筛选分类类别

print(tips['day'].value_counts())
# 查看day字段的唯一值

sns.stripplot(x="day", y="total_bill", data=tips,jitter = True, 
              order = ['Sat','Sun'])
# order → 筛选类别

Python图表数据可视化Seaborn:2. 分类数据可视化

Python图表数据可视化Seaborn:2. 分类数据可视化

1.2 swarmplot()分簇散点图

# 2、swarmplot()
# 分簇散点图

sns.swarmplot(x="total_bill", y="day", data=tips,
              size = 5, edgecolor = 'w',linewidth=1,marker = 'o',
              palette = 'Reds')
# 用法和stripplot类似

Python图表数据可视化Seaborn:2. 分类数据可视化

2. 分类数据可视化 - 分布图

boxplot( ) / violinplot( ) / lvplot( )

 2.1 boxplot()箱型图

sns.boxplot(x="day", y="total_bill", data=tips,
            linewidth = 2,   # 线宽
            width = 0.8,     # 箱之间的间隔比例
            fliersize = 3,   # 异常点大小
            palette = 'hls', # 设置调色板
            whis = 1.5,      # 设置IQR 
            notch = True,    # 设置是否以中值做凹槽
            order = ['Thur','Fri','Sat','Sun'],  # 筛选类别

# 1、boxplot()
# 箱型图

sns.boxplot(x="day", y="total_bill", data=tips,
            linewidth = 2,   # 线宽
            width = 0.8,     # 箱之间的间隔比例
            fliersize = 3,   # 异常点大小
            palette = 'hls', # 设置调色板
            whis = 1.5,      # 设置IQR 
            notch = True,    # 设置是否以中值做凹槽
            order = ['Thur','Fri','Sat','Sun'],  # 筛选类别
           )
# 绘制箱型图

sns.swarmplot(x="day", y="total_bill", data=tips,color ='k',size = 3,alpha = 0.8)
# 可以添加散点图

Python图表数据可视化Seaborn:2. 分类数据可视化

# 1、boxplot() 通过hue参数再分类

sns.boxplot(x="day", y="total_bill", data=tips,
            hue = 'smoker', palette = 'Reds')
# 绘制箱型图

#sns.swarmplot(x="day", y="total_bill", data=tips,color ='k',size = 3,alpha = 0.8)
# 可以添加散点图

Python图表数据可视化Seaborn:2. 分类数据可视化

2.2 violinplot()小提琴图

sns.violinplot(x="day", y="total_bill", data=tips,
            linewidth = 2,   # 线宽
            width = 0.8,     # 箱之间的间隔比例
            palette = 'hls', # 设置调色板
            order = ['Thur','Fri','Sat','Sun'],  # 筛选类别
            scale = 'area',  # 测度小提琴图的宽度:area-面积相同,count-按照样本数量决定宽度,width-宽度一样
            gridsize = 50,   # 设置小提琴图边线的平滑度,越高越平滑
            inner = 'box',   # 设置内部显示类型 → “box”, “quartile”, “point”, “stick”, None
            #bw = 0.8        # 控制拟合程度,一般可以不设置
           )

# 2、violinplot()  小提琴图

sns.violinplot(x="day", y="total_bill", data=tips,
            linewidth = 2,   # 线宽
            width = 0.8,     # 箱之间的间隔比例
            palette = 'hls', # 设置调色板
            order = ['Thur','Fri','Sat','Sun'],  # 筛选类别
            scale = 'area',  # 测度小提琴图的宽度:area-面积相同,count-按照样本数量决定宽度,width-宽度一样
            gridsize = 50,   # 设置小提琴图边线的平滑度,越高越平滑
            inner = 'box',   # 设置内部显示类型 → “box”, “quartile”, “point”, “stick”, None
            #bw = 0.8        # 控制拟合程度,一般可以不设置
           )
# 用法和boxplot类似

Python图表数据可视化Seaborn:2. 分类数据可视化

# 2、violinplot() 通过hue参数再分类

sns.violinplot(x="day", y="total_bill", data=tips,
               hue = 'smoker', palette="muted", 
               split=True,  # 设置是否拆分小提琴图
               inner="quartile")

Python图表数据可视化Seaborn:2. 分类数据可视化

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

# 2、violinplot()  结合散点图

sns.violinplot(x="day", y="total_bill", data=tips, palette = 'hls', inner = None)
sns.swarmplot(x="day", y="total_bill", data=tips, color="w", alpha=.5)
# 插入散点图

Python图表数据可视化Seaborn:2. 分类数据可视化

2.3 lvplot() LV图表

sns.lvplot(x="day", y="total_bill", data=tips, palette="mako",
           #hue = 'smoker',
           width = 0.8,           # 箱之间间隔比例
           linewidth = 12,
           scale = 'area',        # 设置框的大小 → “linear”、“exonential”、“area”
           k_depth = 'proportion',  # 设置框的数量 → “proportion”、“tukey”、“trustworthy”
          )

# 3、lvplot()  LV图表

sns.lvplot(x="day", y="total_bill", data=tips, palette="mako",
           #hue = 'smoker',
           width = 0.8,           # 箱之间间隔比例
           linewidth = 12,
           scale = 'area',        # 设置框的大小 → “linear”、“exonential”、“area”
           k_depth = 'proportion',  # 设置框的数量 → “proportion”、“tukey”、“trustworthy”
          )
# 绘制LV图

sns.swarmplot(x="day", y="total_bill", data=tips,color ='k',size = 3,alpha = 0.8)
# 可以添加散点图

Python图表数据可视化Seaborn:2. 分类数据可视化

3. 分类数据可视化 - 统计图

barplot( ) / countplot( ) / pointplot( )

3.1 barplot()柱状图

sns.barplot(x="sex", y="survived", hue="class", data=titanic,
            palette = 'hls', 
            order = ['male','female'],  # 筛选类别
            capsize = 0.05,  # 误差线横向延伸宽度
            saturation=.8,   # 颜色饱和度
            errcolor = 'gray',errwidth = 2,  # 误差线颜色,宽度
            ci = 'sd'    # 置信区间误差 → 0-100内值、'sd'、None
            )

# 1、barplot()
# 柱状图 - 置信区间估计
# 置信区间:样本均值 + 抽样误差

titanic = sns.load_dataset("titanic")
print(titanic.head())
print('-----')
# 加载数据

Python图表数据可视化Seaborn:2. 分类数据可视化

sns.barplot(x="sex", y="survived", hue="class", data=titanic,
            palette = 'hls', 
            order = ['male','female'],  # 筛选类别
            capsize = 0.05,  # 误差线横向延伸宽度
            saturation=.8,   # 颜色饱和度
            errcolor = 'gray',errwidth = 2,  # 误差线颜色,宽度
            ci = 'sd'    # 置信区间误差 → 0-100内值、'sd'、None
            )

Python图表数据可视化Seaborn:2. 分类数据可视化

print(titanic.groupby(['sex','class']).mean()['survived'])
print(titanic.groupby(['sex','class']).std()['survived'])
# 计算数据

 Python图表数据可视化Seaborn:2. 分类数据可视化

# 1、barplot()
# 柱状图 - 置信区间估计  

sns.barplot(x="day", y="total_bill", hue="sex", data=tips,
            palette = 'Blues',edgecolor = 'w')
tips.groupby(['day','sex']).mean()
# 计算数据

Python图表数据可视化Seaborn:2. 分类数据可视化

Python图表数据可视化Seaborn:2. 分类数据可视化

# 1、barplot()
# 柱状图 - 置信区间估计

crashes = sns.load_dataset("car_crashes").sort_values("total", ascending=False)
print(crashes.head())
# 加载数据

f, ax = plt.subplots(figsize=(6, 15))
# 创建图表

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)

Python图表数据可视化Seaborn:2. 分类数据可视化

Python图表数据可视化Seaborn:2. 分类数据可视化

3.2 countplot()计数柱状图 

sns.countplot(x="class", hue="who", data=titanic,palette = 'magma')

# 2、countplot()  计数柱状图

sns.countplot(x="class", hue="who", data=titanic,palette = 'magma')
#sns.countplot(y="class", hue="who", data=titanic,palette = 'magma')  
# x/y → 以x或者y轴绘图(横向,竖向)
# 用法和barplot相似

Python图表数据可视化Seaborn:2. 分类数据可视化

3.3 pointplot()折线图

# 3、pointplot()
# 折线图 - 置信区间估计

sns.pointplot(x="time", y="total_bill", hue = 'smoker',data=tips,
              palette = 'hls',
              dodge = True,   # 设置点是否分开
              join = True,    # 是否连线
              markers=["o", "x"], linestyles=["-", "--"],  # 设置点样式、线型
              )
tips.groupby(['time','smoker']).mean()['total_bill']
# 计算数据
# # 用法和barplot相似

Python图表数据可视化Seaborn:2. 分类数据可视化

Python图表数据可视化Seaborn:2. 分类数据可视化

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Wesley13 Wesley13
3年前
java将前端的json数组字符串转换为列表
记录下在前端通过ajax提交了一个json数组的字符串,在后端如何转换为列表。前端数据转化与请求varcontracts{id:'1',name:'yanggb合同1'},{id:'2',name:'yanggb合同2'},{id:'3',name:'yang
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
4个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
10个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这