热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开发笔记:Python图表数据可视化Seaborn:2.分类数据可视化

篇首语:本文由编程笔记#小编为大家整理,主要介绍了Python图表数据可视化Seaborn:2.分类数据可视化相关的知识,希望对你有一定的参考价值。

篇首语:本文由编程笔记#小编为大家整理,主要介绍了Python图表数据可视化Seaborn:2. 分类数据可视化相关的知识,希望对你有一定的参考价值。




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

stripplot( ) / swarmplot( )

sns.stripplot(x="day",y="total_bill",data=tips,jitter = True, size = 5, edgecolor = \'w\',lineo\')

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\',lineo\' # 设置点的大小、描边颜色或宽度、点样式
)


1.1 stripplot()

  hue参数可再分类


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

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


# 1、stripplot() 设置调色盘

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


# 1、stripplot() 筛选分类类别
print(tips[\'day\'].value_counts())
# 查看day字段的唯一值

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


1.2 swarmplot()分簇散点图


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

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


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)
# 可以添加散点图


# 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)
#
可以添加散点图


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类似


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

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

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)
# 插入散点图


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)
# 可以添加散点图

 


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(\'-----\')
# 加载数据


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
)


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

 


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

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


# 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)


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相似


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相似

 



推荐阅读
  • 本指南从零开始介绍Scala编程语言的基础知识,重点讲解了Scala解释器REPL(读取-求值-打印-循环)的使用方法。REPL是Scala开发中的重要工具,能够帮助初学者快速理解和实践Scala的基本语法和特性。通过详细的示例和练习,读者将能够熟练掌握Scala的基础概念和编程技巧。 ... [详细]
  • 解决问题:1、批量读取点云las数据2、点云数据读与写出3、csf滤波分类参考:https:github.comsuyunzzzCSF论文题目ÿ ... [详细]
  • 本文详细介绍了如何使用Python中的smtplib库来发送带有附件的邮件,并提供了完整的代码示例。作者:多测师_王sir,时间:2020年5月20日 17:24,微信:15367499889,公司:上海多测师信息有限公司。 ... [详细]
  • 本文介绍如何使用OpenCV和线性支持向量机(SVM)模型来开发一个简单的人脸识别系统,特别关注在只有一个用户数据集时的处理方法。 ... [详细]
  • Spring – Bean Life Cycle
    Spring – Bean Life Cycle ... [详细]
  • Ihavetwomethodsofgeneratingmdistinctrandomnumbersintherange[0..n-1]我有两种方法在范围[0.n-1]中生 ... [详细]
  • MicrosoftDeploymentToolkit2010部署培训实验手册V1.0目录实验环境说明3实验环境虚拟机使用信息3注意:4实验手册正文说 ... [详细]
  • 原文网址:https:www.cnblogs.comysoceanp7476379.html目录1、AOP什么?2、需求3、解决办法1:使用静态代理4 ... [详细]
  • 本文介绍了如何利用 `matplotlib` 库中的 `FuncAnimation` 类将 Python 中的动态图像保存为视频文件。通过详细解释 `FuncAnimation` 类的参数和方法,文章提供了多种实用技巧,帮助用户高效地生成高质量的动态图像视频。此外,还探讨了不同视频编码器的选择及其对输出文件质量的影响,为读者提供了全面的技术指导。 ... [详细]
  • 如何将Python与Excel高效结合:常用操作技巧解析
    本文深入探讨了如何将Python与Excel高效结合,涵盖了一系列实用的操作技巧。文章内容详尽,步骤清晰,注重细节处理,旨在帮助读者掌握Python与Excel之间的无缝对接方法,提升数据处理效率。 ... [详细]
  • 在使用 Cacti 进行监控时,发现已运行的转码机未产生流量,导致 Cacti 监控界面显示该转码机处于宕机状态。进一步检查 Cacti 日志,发现数据库中存在 SQL 查询失败的问题,错误代码为 145。此问题可能是由于数据库表损坏或索引失效所致,建议对相关表进行修复操作以恢复监控功能。 ... [详细]
  • Python 序列图分割与可视化编程入门教程
    本文介绍了如何使用 Python 进行序列图的快速分割与可视化。通过一个实际案例,详细展示了从需求分析到代码实现的全过程。具体包括如何读取序列图数据、应用分割算法以及利用可视化库生成直观的图表,帮助非编程背景的用户也能轻松上手。 ... [详细]
  • 本文深入探讨了MDK链接脚本的应用与优化技巧。首先,文章介绍了链接脚本的基本概念及其在嵌入式系统开发中的重要性。接着,通过具体实例详细分析了链接脚本的结构和功能,特别是在程序在FLASH中运行时,如何优化链接脚本以提高系统性能。此外,文章还讨论了无需将程序加载到SRAM中的技术细节,为开发者提供了实用的参考和指导。 ... [详细]
  • 在Android应用开发中,实现与MySQL数据库的连接是一项重要的技术任务。本文详细介绍了Android连接MySQL数据库的操作流程和技术要点。首先,Android平台提供了SQLiteOpenHelper类作为数据库辅助工具,用于创建或打开数据库。开发者可以通过继承并扩展该类,实现对数据库的初始化和版本管理。此外,文章还探讨了使用第三方库如Retrofit或Volley进行网络请求,以及如何通过JSON格式交换数据,确保与MySQL服务器的高效通信。 ... [详细]
  • 针对图像分类任务的训练方案进行了优化设计。通过引入PyTorch等深度学习框架,利用其丰富的工具包和模块,如 `torch.nn` 和 `torch.nn.functional`,提升了模型的训练效率和分类准确性。优化方案包括数据预处理、模型架构选择和损失函数的设计等方面,旨在提高图像分类任务的整体性能。 ... [详细]
author-avatar
18X712BB_923
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有