Seaborn库的基本绘图操作

这篇具有很好参考价值的文章主要介绍了Seaborn库的基本绘图操作。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Seaborn库的基本绘图操作

#seaborn库可视化模板

#导库
from matplotlib import pyplot as plt
import pandas as pd
import numpy as np
import seaborn as sns

# 设置中文字体
sns.set_style('whitegrid', {'font.sans-serif':['simhei', 'Arial']})

# 忽略警告
import warnings
warnings.filterwarnings('ignore')

#加载数据
data = pd.read_csv('.../data.csv')

一、seaborn的绘图风格

1、主题样式

seaborn库中有darkgird(灰色背景+白网格)、whitegrid(白色背景+黑网格)、dark(仅灰色背景)、white(仅白色背景)、ticks(坐标轴带刻度)5种预设的主题。

个人推荐whitegrid或white

darkgrid与whitegrid主题有助于在绘图时进行定量信息的查找

dark与white主题有助于防止网格与表示数据的线条混淆

ticks主题有助于体现少量特殊的数据元素结构

set_style( )修改主题,默认主题为darkgrid

sns.set_style( style = None , rc = None)

set_style函数只能修改axes_style函数显示的参数,axes_style函数可以达到临时设置图形样式的效果。

x = np.arange(1, 10, 2)
y1 = x + 1
y2 = x + 3
y3 = x + 5
def showLine(flip=1):
    sns.lineplot(x, y1)
    sns.lineplot(x, y2)
    sns.lineplot(x, y3)
pic = plt.figure(figsize=(12, 8))
with sns.axes_style('darkgrid'):  # 使用darkgrid主题
    pic.add_subplot(2, 3, 1)
    showLine()
    plt.title('darkgrid')
with sns.axes_style('whitegrid'):  # 使用whitegrid主题
    pic.add_subplot(2, 3, 2)
    showLine()
    plt.title('whitegrid')
with sns.axes_style('dark'):  # 使用dark主题
    pic.add_subplot(2, 3, 3)
    showLine()
    plt.title('dark')
with sns.axes_style('white'):  # 使用white主题
    pic.add_subplot(2, 3, 4)
    showLine()
    plt.title('white')
with sns.axes_style('ticks'):  # 使用ticks主题
    pic.add_subplot(2, 3, 5)
    showLine()
    plt.title('ticks')
sns.set_style(style='darkgrid', rc={'font.sans-serif': ['MicrosoftYaHei', 'SimHei'],
                            'grid.color': 'black'})  # 修改主题中参数
pic.add_subplot(2, 3, 6)
showLine()
plt.title('修改参数')
plt.show()

sns.lineplot,python学习记录,python

2、元素缩放

set_context( )可以设置输出图形的尺寸,默认为None

context参数可接收paper、notebook、talk、poster类型

paper < notebook < talk < poster

使用set_context函数只能修改plotting_context函数显示的参数,plotting_context函数通过调整参数来改变图中标签、线条或其他元素的大小,但不会影响整体样式

sns.set_context( context = None , font_scale = 1, rc = None )

sns.set()
x = np.arange(1, 10, 2)
y1 = x + 1
y2 = x + 3
y3 = x + 5
def showLine(flip=1):
    sns.lineplot(x, y1)
    sns.lineplot(x, y2)
    sns.lineplot(x, y3)
pic = plt.figure(figsize=(8, 8))
# 恢复默认参数
pic = plt.figure(figsize=(8, 8), dpi=100)
with sns.plotting_context('paper'):  # 选择paper类型
    pic.add_subplot(2, 2, 1)
    showLine()
    plt.title('paper')
with sns.plotting_context('notebook'):  # 选择notebook类型
    pic.add_subplot(2, 2, 2)
    showLine()
    plt.title('notebook')
with sns.plotting_context('talk'):  # 选择talk类型
    pic.add_subplot(2, 2, 3)
    showLine()
    plt.title('talk')
with sns.plotting_context('poster'):  # 选择poster类型
    pic.add_subplot(2, 2, 4)
    showLine()
    plt.title('poster')
plt.show()

sns.lineplot,python学习记录,python

3、边框控制

despine( )可以移除任意位置的边框、调节边框的位置、修剪边框的长度

sns.despine( fig = None , ax = None , top = True , right = True , left = False , bottom = False , offset = None , trim = False )

参数 说明
top 接收boolean,表示删除顶部边框。默认为True
right 接收boolean,表示删除右侧边框。默认为True
left 接收boolean,表示删除左侧边框。默认为False
bottom 接收boolean,表示删除底部边框。默认为False
offset 接收int或dict,表示边框与坐标轴的距离。默认为None
trim 接收boolean,表示将边框限制为每个非扭曲轴上的最小和最大主刻度。默认为False
#无参数despine()
with sns.axes_style('white'):
    showLine()
    sns.despine()  # 默认无参数状态,就是删除上方和右方的边框
    plt.title('控制图形边框')
plt.show()

sns.lineplot,python学习记录,python

#边框与坐标轴的距离为10
with sns.axes_style('white'):
    data = np.random.normal(size=(20, 6)) + np.arange(6) / 2
    sns.boxplot(data=data)
    sns.despine(offset=10, left=False, bottom=False)
    plt.title('控制图形边框')
plt.show()

sns.lineplot,python学习记录,python

二、绘制关系图

1、散点图—sns.scatterplot( )

# 加载数据
hr = pd.read_csv('../data/hr.csv', encoding='gbk')
# 提取部门为产品开发部、离职为1的数据
product = hr.iloc[(hr['部门'].values=='产品开发部') & (hr['离职'].values==1), :]
ax = sns.scatterplot(x='评分', y='每月平均工作小时数(小时)', data=product)
plt.title('评价分数与平均工作时间散点图')
plt.show()

sns.lineplot,python学习记录,python

#通过对点着色和改变标记来突显类别
markers = {'低' : 'o', '中' : 'D', '高' : 's'}
sns.scatterplot(x='评分', y='每月平均工作小时数(小时)',hue='薪资',
                     style='薪资', markers=markers, data=product) 
plt.title('评价分数与平均工作时间散点图')
plt.show()

sns.lineplot,python学习记录,python

2、折线图—sns.lineplot( )

主要参数:

estimator:接收pandas方法,可调用函数、None。表示y在同一x级别的聚合方法。默认为mean

ci:接收int、sd、None,表示使用estimator参数聚合的置信区间大小,sd表示数据标准差。默认为95

# 绘制房间数和房屋价格的折线图
boston = pd.read_csv('../data/boston_house_prices.csv', encoding='gbk')
sns.lineplot(x='房间数(间)', y='房屋价格(千美元)', data=boston, ci=0)
plt.title('房间数与房屋价格')
plt.show()

sns.lineplot,python学习记录,python

# 绘制工龄和评分折线图
IT = hr.iloc[hr['部门'].values=='IT部', :]
sns.lineplot(x='工龄(年)', y='评分', hue='离职', data=IT, ci=0)
plt.title('工龄与上年度评价')
plt.show()

sns.lineplot,python学习记录,python

3、热力图—heatmap( )

plt.rcParams['axes.unicode_minus'] = False
#plt.figure(figsize=(16, 12))
corr = boston.corr()  # 特征的相关系数矩阵
sns.heatmap(corr)
plt.title('特征矩阵热力图')
plt.show()

sns.lineplot,python学习记录,python

#添加数据标记
plt.figure(figsize=(10, 10))
sns.heatmap(corr, annot=True, fmt='.2f')
plt.title('特征矩阵热力图')
plt.show()

sns.lineplot,python学习记录,python

4、矩阵网格图—PairGrid( )

PairGrid( )可用于绘制数据关联程度的网格图

PairGrid( )将数据集中的每个变量映射到多个网格中的列和行,并可以使用不同的绘图函数绘制上三角和下三角的双变量图,显示数据集中变量的两两之间的关系

#绘制犯罪率、一氧化氮含量、房间数与房屋价格两两之间的相关性网格图
g = sns.PairGrid(boston, vars=['犯罪率', '一氧化氮含量(ppm)', '房间数(间)', '房屋价格(千美元)'])
g = g.map(plt.scatter)
plt.suptitle('矩阵网格图', verticalalignment='bottom' , y=1)
plt.show()

sns.lineplot,python学习记录,python

# 绘制不同颜色的数据子集
sell = hr.iloc[(hr['部门'].values=='销售部') & (hr['离职'].values==1), :]
g = sns.PairGrid(sell,
                 vars=['满意度', '评分', '每月平均工作小时数(小时)'],
                 hue='薪资', palette='Set3')
g = g.map_diag(sns.kdeplot)
g = g.map_offdiag(plt.scatter)
plt.suptitle('不同颜色的矩阵网格图', verticalalignment='bottom' , y=1)
plt.show()

sns.lineplot,python学习记录,python

5、关系网格组合图—relplot( )

relplot( )可以实现统一访问scatterplot函数和lineplot函数以绘制关系网格组合图

#绘制单构面散点图
sns.relplot(x='满意度', y='评分', hue='薪资',
            data=sell)
plt.title('满意度水平与上年度评价')
plt.show()

sns.lineplot,python学习记录,python

#绘制网格图
sns.relplot(x='满意度', y='评分', hue='5年内升职', row='薪资',
            col='工作事故', data=IT)
plt.show()

sns.lineplot,python学习记录,python

sns.lineplot,python学习记录,python

sns.relplot(x='满意度', y='评分', hue='5年内升职', col='工作事故',
            col_wrap=1, data=IT)
plt.show()

sns.lineplot,python学习记录,python

三、绘制分类图

1、条形图—barplot( )

from matplotlib import pyplot as plt
import pandas as pd
import seaborn as sns
import math

# 加载数据
boston = pd.read_csv('E:/桌面/源代码+实验数据/第4章/data/boston_house_prices.csv', encoding='gbk')
hr = pd.read_csv('E:/桌面/源代码+实验数据/第4章/data/hr.csv', encoding='gbk')

# 使用seaborn库绘图
sns.set_style('whitegrid', {'font.sans-serif':['simhei', 'Arial']})
# 设置中文字体
plt.rcParams['font.sans-serif'] = ['SimHei']
# 设置正常显示负号
plt.rcParams['axes.unicode_minus']=False

# 绘制各部门人员总数条形图
count = hr['部门'].value_counts()
index = count.index
sns.barplot(x=count, y=index)
plt.xticks(rotation=70)
plt.xlabel('部门')
plt.ylabel('总数')
plt.title('各部门人数对比')
plt.show()

sns.lineplot,python学习记录,python

2、计数图—countplot( )

#绘制x轴与y轴显示数据的计数图
plt.figure(figsize=(8, 4))
plt.subplot(121)	#画布分成一行二列,该子图表示为第一个
sns.countplot(x='工龄(年)', data=hr)
plt.title('x轴显示数据的计数图')
plt.ylabel('计数')
plt.subplot(122)	#画布分成一行二列,该子图表示为第二个
sns.countplot(y='工龄(年)', data=hr)
plt.title('y轴显示数据的计数图')
plt.xlabel('计数')
plt.show()

sns.lineplot,python学习记录,python

# 绘制多分类嵌套的计数图
sns.countplot(x='5年内升职', hue='薪资', data=hr, palette='Set2')
plt.suptitle('多变量散点图')
plt.ylabel('总数')
plt.show()

sns.lineplot,python学习记录,python

3、绘制单变量分布图(直方图)—distplot( )

#绘制单变量分布图
sns.distplot(boston['财产税'], kde=False)
plt.title('单变量的分布图')
plt.ylabel('数量')
plt.show()

sns.lineplot,python学习记录,python

4、绘制分类散点图—stripplot( )、swarmplot( )

(1)stripplot( )

stripplot( )接收多种类型的传递数据,包括列表、Numpy阵列、数据框(DataFrame)、序列(Series)、数组或向量。

主要参数:

jitter:表示添加均匀随机噪声(仅改变图形)来优化图形显示。默认为True。

#绘制简单水平分布散点图
sale = hr.iloc[(hr['部门'].values=='销售部') & (hr['离职'].values==1), :]
sns.stripplot(x=sale['每月平均工作小时数(小时)'])
plt.title('简单水平分布散点图')
plt.show()

sns.lineplot,python学习记录,python

#添加随机噪声抖动
hr1 = hr.iloc[hr['离职'].values==1, :]
plt.figure(figsize=(10, 5))
plt.subplot(121)
plt.xticks(rotation=70)
sns.stripplot(x='部门', y='每月平均工作小时数(小时)', data=hr1)  # 默认添加随机噪声
plt.title('默认随机噪声抖动')
plt.subplot(122)
plt.xticks(rotation=70)
sns.stripplot(x='部门', y='每月平均工作小时数(小时)',
                 data=hr1, jitter=False)  # 不添加随机噪声
plt.title('无随机噪声抖动')
plt.show()

sns.lineplot,python学习记录,python

#以颜色显示第二个分类条件
hr2 = hr.iloc[(hr['薪资'].values=='高') & (hr['离职'].values==0), :]
sns.stripplot(x='5年内升职', y='每月平均工作小时数(小时)',
              hue='部门', data=hr2, jitter=True)
plt.title('前5年是否晋升与平均每月工作时长')
plt.show()

sns.lineplot,python学习记录,python

#使变量沿分类轴方向分类
plt.figure(figsize=(70, 13))
plt.subplot(211)
plt.xticks(rotation=70)
plt.title('不同部门的平均每月工作时长')
sns.stripplot(x='部门', y='每月平均工作小时数(小时)', hue='5年内升职', data=hr2)
plt.subplot(212)
plt.xticks(rotation=70)
sns.stripplot(x='部门', y='每月平均工作小时数(小时)', hue='5年内升职', 
              data=hr2, dodge=True)
plt.show()

sns.lineplot,python学习记录,python

(2)swarmplot( )

用stripplot函数添加随机噪声来增加图形抖动及将变量沿着分类轴绘制后,仍然有重叠的可能。

使用swarmplot函数可以避免这种情况,swarmplot函数能够绘制出具有非重叠点的分类散点图

#绘制简单的分布密度散点图
sns.swarmplot(x='部门', y='每月平均工作小时数(小时)', data=hr2)
plt.xticks(rotation=70)
plt.title('不同部门的平均每月工作时长')
plt.show()

sns.lineplot,python学习记录,python

#添加多个嵌套分类变量
sns.swarmplot(x='部门', y='每月平均工作小时数(小时)',
                 hue='5年内升职', data=hr2)
plt.xticks(rotation=30)
plt.title('不同部门的平均每月工作时长')
plt.show()

sns.lineplot,python学习记录,python

5、绘制增强箱线图—boxenplot( )

#绘制普通箱线图与增强箱线图
fig, axes = plt.subplots(1, 2, figsize=(8, 4))
axes[0].set_title('普通箱线图')
boston['房间数(取整)'] = boston['房间数(间)'].map(math.floor)  # 对房间数取整
sns.boxplot(x='房间数(取整)', y='房屋价格(千美元)', 
            data=boston, orient='v', ax=axes[0])  # 普通
axes[1].set_title('增强箱线图')
sns.boxenplot(x='房间数(取整)', y='房屋价格(千美元)', 
              data=boston, orient='v', ax=axes[1])  # 增强
plt.show()

sns.lineplot,python学习记录,python

6、绘制分类网格组合图—pairplot( )

使用分类网格组合图可绘制出数据集中的成对关系

#绘制波士顿房价的多变量散点图
sns.pairplot(boston[['犯罪率', '一氧化氮含量(ppm)', '房间数(间)', '低收入人群', '房屋价格(千美元)']])
plt.suptitle('多变量散点图', verticalalignment='bottom', y=1)
plt.show()

sns.lineplot,python学习记录,python

#绘制指定分类变量的散点图
hr3 = sale[['满意度', '总项目数', '工龄(年)', '薪资']]
sns.pairplot(hr3, hue='薪资')
plt.suptitle('多变量分类散点图', verticalalignment='bottom')
plt.show()

sns.lineplot,python学习记录,python

四、绘制回归图

1、绘制线性回归拟合图—regplot( )

from matplotlib import pyplot as plt
import pandas as pd
import seaborn as sns

# 设置中文字体
sns.set_style('whitegrid', {'font.sans-serif':['simhei', 'Arial']})

# 忽略警告
import warnings
warnings.filterwarnings('ignore')

# 加载数据
boston = pd.read_csv('../data/boston_house_prices.csv', encoding='gbk')

#绘制修改置信区间ci参数前后的线性回归拟合图
fig, axes = plt.subplots(1, 2, figsize=(8, 4))
axes[0].set_title('修改前的线性回归拟合图')
axes[1].set_title('修改后的线性回归拟合图')
sns.regplot(x='房间数(间)', y='房屋价格(千美元)', data=boston, ax=axes[0])
sns.regplot(x='房间数(间)', y='房屋价格(千美元)', data=boston, ci=50, ax=axes[1])
plt.show()

sns.lineplot,python学习记录,python

2、绘制线性回归网格组合图—lmplot( )

#以河流穿行为类别绘制低收入人群与房屋价格两个变量的回归网格组合图
sns.lmplot(x='低收入人群', y='房屋价格(千美元)', col='河流穿行', data=boston)
plt.show()

‘…/data/boston_house_prices.csv’, encoding=‘gbk’)

#绘制修改置信区间ci参数前后的线性回归拟合图
fig, axes = plt.subplots(1, 2, figsize=(8, 4))
axes[0].set_title(‘修改前的线性回归拟合图’)
axes[1].set_title(‘修改后的线性回归拟合图’)
sns.regplot(x=‘房间数(间)’, y=‘房屋价格(千美元)’, data=boston, ax=axes[0])
sns.regplot(x=‘房间数(间)’, y=‘房屋价格(千美元)’, data=boston, ci=50, ax=axes[1])
plt.show()


[外链图片转存中...(img-AgfMs08W-1664038679472)]

### 2、绘制线性回归网格组合图—lmplot( )

```python
#以河流穿行为类别绘制低收入人群与房屋价格两个变量的回归网格组合图
sns.lmplot(x='低收入人群', y='房屋价格(千美元)', col='河流穿行', data=boston)
plt.show()

sns.lineplot,python学习记录,python文章来源地址https://www.toymoban.com/news/detail-673256.html

到了这里,关于Seaborn库的基本绘图操作的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【100天精通Python】Day71:Python可视化_一文掌握Seaborn库的使用《一》_数据分布可视化,数据关系可视化,示例+代码

    目录 1. 数据分布的可视化 1.1 直方图(Histograms) 1.2 核密度估计图(Kernel Density Estimation Plot)

    2024年02月06日
    浏览(54)
  • 【100天精通Python】Day72:Python可视化_一文掌握Seaborn库的使用《二》_分类数据可视化,线性模型和参数拟合的可视化,示例+代码

    目录 1. 分类数据的可视化 1.1 类别散点图(Categorical Scatter Plot) 1.2 类别分布图(Categorical Distribution Plot)

    2024年02月08日
    浏览(42)
  • Seaborn系列(三):分布统计绘图(distribution)

    Seaborn系列目录 分布分析(了解变量的分布)是数据分析和建模非常重要且必要的步骤,也是统计学中最基本的方法。 分布就是了解数据变量的分布规律的。seaborn中“分布”绘图函数共5个: displot() :通过kind参数指定为\\\"hist\\\",“kde”,“ecdf”。默认为hist。 histplot() :直方图 kde

    2024年02月03日
    浏览(42)
  • 数据分析 — Matplotlib 、Pandas、Seaborn 绘图

    Matplotlib 是一个用于 绘制数据可视化图形的 Python 库 。它提供了丰富的绘图工具,可以用于创建各种类型的图表。 安装和导入: pip install matplotlib import matplotlib.pyplot as plt # 导入 Matplotlib 库 图表适用场景总结: 1、折线图:表示数据的趋势情况,如几年每个月份的销量走势、

    2024年02月19日
    浏览(43)
  • Matlab中的基本绘图操作,Matlab中如何绘图

    目录 一.示例基本程序 二.图片 三.说明         1.首先应该给定初值 2.matlab中的Π用pi代替 3.figure的作用是建立一个幕布,有时可以不写 4.plot( x=sin(x))作用是绘制一幅 x=sin(x)当前函数的图 5.title(\\\'   x=sin(x) \\\')的中可以添加图片的标题 x=sin(x) 6.xlabel(‘  x   ’)与ylabel(

    2024年02月16日
    浏览(36)
  • 嵌入式硬件库的基本操作方式与分析

    本次要介绍的开源软件是 c-periphery: 一个用 C 语言编写的硬件外设访问库。 我们可以用它来读写 Serial、SPI、I2C 等,非常适合在嵌入式产品上使用。 我们可以基于它优秀的代码框架,不断地扩展出更多的功能模块,最终形成自己产品适用的 Linux 硬件抽象层。 源文件: 约

    2024年02月06日
    浏览(49)
  • (学习笔记)PCL点云库的基本使用

    目录 前言 1、理解点云库 1.1、不同的点云类型 1.2、PCL中的算法 1.3、ROS的PCL接口 2、创建第一个PCL程序 2.1、创建点云 2.2、加载点云文件 2.3、创建点云文件 2.4、点云可视化 2.5、点云滤波和下采样 2.5.1、点云滤波  2.5.2、点云下采样 2.6、点云配准与匹配         点云是一种

    2023年04月08日
    浏览(30)
  • Python中的selenium库的基本用法

    Selenium是一个用于测试网站的自动化测试工具,支持各种浏览器包括Chrome、Firefox、Safari等主流界面浏览器,同时也支持phantomJS无界面浏览器。 通过此行代码可以快速在Python中安装selenium库 pip install Selenium 另外,我们仍需要安装浏览器驱动 Selenium3.x调用浏览器必须有一个webdr

    2023年04月20日
    浏览(42)
  • Python的基本绘图<三>

    今天继续对示例进行分析,进一步巩固Turtle库的相关语法。 示例1 绘制圆+正方形,绘制要求: a.绘制一个正方形并且内切一个填充的圆; b.正方形边长为100并且轮廓线为红色; c.内切圆轮廓线为红色并且填充为黄色; d.绘图过程中隐藏画笔,可以清晰看见图形绘制过程。 代码

    2024年02月08日
    浏览(26)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包