第五章. 可视化数据分析图表—Seaborn图表(折线图,直方图,条形图,散点图)

第五章. 可视化数据分析图

5.7 Seaborn图表

Seaborn是一个基于Matplotlib的高级可视化效果库,偏向于统计图表,主要针对的是数据挖掘和机器学习中的变量特征选取,相比Matplotlib,他的语法相对简单,但是具有一定的局限性,本节主要介绍折线图,直方图,条形图,散点图。

1.Seaborn图表的基本设置

1).背景风格:

设置Seaborn的背景风格,主要使用axes_style函数和set_style函数,Seaborn有5个背景主题,适用与不同的场景和主题:
·darkgrid:灰色网格(默认值,主题中的白线能避免影响数据的表现)
·whitegrid:白色网格(更适合表达“重数据元素”)
·dark:灰色背景
·white:白色背景
·ticks:四周带刻度的白色背景

2).边框控制(despine函数):

·移除顶部和右边边框

seaborn.deapline()

·使用两个坐标轴离开一段距离

seaborn.deapline(offset=5,trim=True)

·移除左边边框,与set_style方法的白色网格搭配只用效果更佳

seaborn.set_style('whitegrid')
seaborn.deapline(left=True)

·移除指定边框,设置为True即可

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

2.折线图 (seaborn.relplot 和 seaborn.lineplot)

在Seaborn中实现折线图的两种方法:一是在relplot函数中通过设置kind参数为line,二是使用lineplot函数直接绘制折线图

1).语法:

seaborn.relplot(x=None, y=None, hue=None, size=None, style=None,data=None, row=None,col=None, col_wrap=None,row_order=None,col_order=None, palette=None,hue_order=None, hue_norm=None, sizes=None,size_order=None, size_norm=None, markers=None,dashes=None, style_order=None, legend='auto', kind='scatter', height=5, aspect=1,facet_kws=None, units=None, **kwargs)

参数说明:
x, y:x,y轴上的数据
hue: 将生成具有不同颜色的元素的分组变量。可以是按类别的(categorical),也可以是数字的,不过在后一种情况下,颜色映射的行为会有所不同。
data: 输入数据结构。要么是可以分配给命名变量的向量的长形式集合,要么是将进行内部整形的宽形式数据集
kind:需要绘制的图

2).示例:

Excel中的数据:
在这里插入图片描述
代码:

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

pd.set_option('display.unicode.east_asian_width', True)
df = pd.read_excel('F:\\Note\\清单.xlsx', sheet_name='Sheet4')
print(df)

sns.set_style('darkgrid')

plt.rcParams['font.sans-serif'] = ['SimHei']  # 解决中文乱码
plt.rcParams['axes.unicode_minus'] = False  # 解决负号不显示的问题

# 绘制折线图
ax = sns.relplot(x='姓名', y='语文', kind='line', data=df)

# 设置文本标签
ax = ax.axes[0,0]
for x, y in zip(df['姓名'], df['语文']):
    ax.text(x, y, '%.2f' % y, ha='center', va='center', fontsize=8, color='black')

# 设置标题
ax.title.set_text('成绩统计表')

# 显示图像
plt.show()

结果展示:
在这里插入图片描述

3).语法:

seaborn.lineplot(x=None, y=None, hue=None, size=None, style=None,data=None, row=None,col=None, col_wrap=None,row_order=None,col_order=None, palette=None,hue_order=None, hue_norm=None, sizes=None,size_order=None, size_norm=None, markers=None,dashes=None, style_order=None, legend='auto', kind='scatter', height=5, aspect=1,facet_kws=None, units=None, **kwargs

参数说明:
x, y:x,y轴上的数据
hue: 将生成具有不同颜色的元素的分组变量。可以是按类别的(categorical),也可以是数字的,不过在后一种情况下,颜色映射的行为会有所不同。
data: 输入数据结构。要么是可以分配给命名变量的向量的长形式集合,要么是将进行内部整形的宽形式数据集
kind:需要绘制的图

4).示例:

Excel中的数据:
在这里插入图片描述
代码:

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

pd.set_option('display.unicode.east_asian_width', True)
df = pd.read_excel('F:\\Note\\清单.xlsx', sheet_name='Sheet8')
print(df)

sns.set_style('darkgrid')

plt.rcParams['font.sans-serif'] = ['SimHei']  # 解决中文乱码
plt.rcParams['axes.unicode_minus'] = False  # 解决负号不显示的问题

# 设置画布大小
plt.figure(figsize=(8, 6), dpi=100)

# 绘制折线图
ax = sns.lineplot(x='姓名', y='成绩', hue='学科', data=df)

# 设置文本标签
x_label = df['姓名']
x_label = np.arange(len(x_label))
width = 0.25

dis1 = x_label
dis2 = x_label
dis3 = x_label

for x, y in zip(x_label, df['成绩']):
    discuss = int(x / 3)
    if x % 3 == 0:
        ax.text(dis1[discuss], y, '%.1f' % y, ha='center', va='center', fontsize=8, color='black')
    elif x % 3 == 1:
        ax.text(dis2[discuss], y, '%.1f' % y, ha='center', va='center', fontsize=8, color='black')
    else:
        ax.text(dis3[discuss], y, '%.1f' % y, ha='center', va='center', fontsize=8, color='black')

# 设置标题
ax.title.set_text('成绩统计表')

# 设置图例
ax.legend(loc='upper right')

# 显示图像
plt.show()

结果展示:
在这里插入图片描述

3.直方图 (seaborn.distplot)

1).语法:

seaborn.distplot(data=None, bins=None, hist=True, kde=True, rug=False, fit=None,hist_kws=None, kde_kws=None, rug_kws=None, fit_kws=None,color=None, vertical=False, norm_hist=False, axlabel=None,label=None, ax=None, x=None)

参数说明:
data:数据
bins:设置矩形图数量
hist:是否显示条形图
kde:是否显示核密度估计图,默认值为True,显示核密度估计图
rug:是否在x轴上显示观测的小细条
fit:拟合的参数分布图形

2).示例:

Excel中的数据:
在这里插入图片描述
代码:

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

pd.set_option('display.unicode.east_asian_width', True)
df = pd.read_excel('F:\\Note\\清单.xlsx', sheet_name='Sheet4')
print(df)

sns.set_style('darkgrid')

plt.rcParams['font.sans-serif'] = ['SimHei']  # 解决中文乱码
plt.rcParams['axes.unicode_minus'] = False  # 解决负号不显示的问题

data = df[['语文']]
sns.distplot(data, kde=True)

# 显示图像
plt.show()

结果展示:
在这里插入图片描述

4.条形图 (seaborn.barplot)

1).语法:

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

参数说明:
x,y:x,y轴数据
hue:分类字段
order,hue_order:变量绘图顺序
orient:条形图是水平显示还是竖直显示
capsize:误差线的宽度
estimator:每类变量的统计方式,默认值:mean

2).示例:

Excel中的数据:
在这里插入图片描述
代码:

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

pd.set_option('display.unicode.east_asian_width', True)
df = pd.read_excel('F:\\Note\\清单.xlsx', sheet_name='Sheet8')
print(df)

sns.set_style('darkgrid')

plt.rcParams['font.sans-serif'] = ['SimHei']  # 解决中文乱码
plt.rcParams['axes.unicode_minus'] = False  # 解决负号不显示的问题

# 设置画布大小
plt.figure(figsize=(8, 6), dpi=100)

# 绘制条形图
ax = sns.barplot(x='姓名', y='成绩', hue='学科', data=df)

# 设置文本标签
x_label = df['姓名']
x_label = np.arange(len(x_label))
width = 0.25

dis1 = x_label - width
dis2 = x_label
dis3 = x_label + width

for x, y in zip(x_label, df['成绩']):
    discuss = int(x / 3)
    if x % 3 == 0:
        ax.text(dis1[discuss], y, '%.1f' % y, ha='center', va='center', fontsize=8, color='black')
    elif x % 3 == 1:
        index = dis2[discuss]
        ax.text(index, y, '%.1f' % y, ha='center', va='center', fontsize=8, color='black')
    else:
        index = dis3[discuss]
        ax.text(index, y, '%.1f' % y, ha='center', va='center', fontsize=8, color='black')

# 设置标题
ax.title.set_text('成绩统计表')

# 设置图例
ax.legend(loc='upper right')

# 显示图像
plt.show()

结果展示:
在这里插入图片描述

5.散点图 (seaborn.relplot)

1).语法:

seaborn.relplot(x=None, y=None, hue=None, size=None, style=None,data=None, row=None,col=None, col_wrap=None,row_order=None,col_order=None, palette=None,hue_order=None, hue_norm=None, sizes=None,size_order=None, size_norm=None, markers=None,dashes=None, style_order=None, legend='auto', kind='scatter', height=5, aspect=1,facet_kws=None, units=None, **kwargs)

参数说明:
x, y:x,y轴上的数据
hue: 将生成具有不同颜色的元素的分组变量。可以是按类别的(categorical),也可以是数字的,不过在后一种情况下,颜色映射的行为会有所不同。
data: 输入数据结构。要么是可以分配给命名变量的向量的长形式集合,要么是将进行内部整形的宽形式数据集
kind:需要绘制的图

2).示例:

Excel中的数据:
在这里插入图片描述
代码:

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

pd.set_option('display.unicode.east_asian_width', True)
df = pd.read_excel('F:\\Note\\清单.xlsx', sheet_name='Sheet4')
print(df)

sns.set_style('darkgrid')

plt.rcParams['font.sans-serif'] = ['SimHei']  # 解决中文乱码
plt.rcParams['axes.unicode_minus'] = False  # 解决负号不显示的问题

# 绘制折线图
ax = sns.relplot(x='姓名', y='语文', data=df)

# 显示图像
plt.show()

结果展示:
在这里插入图片描述

注意:代码中所涉及到的函数和参数,在图表的常用设置1图表的常用设置2 有所介绍

  • 4
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值