Python数据可视化三部曲之 Seaborn 从上手到上头(上)

简介: Python数据可视化三部曲之 Seaborn 从上手到上头

Python数据可视化三部曲之 Seaborn 从上手到上头

文章目录


1. 安装 seaborn

安装:

pip install seaborn

导入:

import seaborn as sns

2.准备数据

正式开始之前我们先用如下代码准备一组数据,方便展示使用。


///

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
pd.set_option('display.unicode.east_asian_width', True)
df1 = pd.DataFrame(
    {'数据序号': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12],
     '厂商编号': ['001', '001', '001', '002', '002', '002', '003', '003', '003', '004', '004', '004'],
     '产品类型': ['AAA', 'BBB', 'CCC', 'AAA', 'BBB', 'CCC', 'AAA', 'BBB', 'CCC', 'AAA', 'BBB', 'CCC'],
     'A属性值': [40, 70, 60, 75, 90, 82, 73, 99, 125, 105, 137, 120],
     'B属性值': [24, 36, 52, 32, 49, 68, 77, 90, 74, 88, 98, 99],
     'C属性值': [30, 36, 55, 46, 68, 77, 72, 89, 99, 90, 115, 101]
    }
)
print(df1)

生成一组数据如下:

image.png

3.背景与边框

3.1 设置背景风格

设置风格使用的是sns.set_style()方法,且这里内置的风格,是用背景色表示名字的,但是实际内容不限于背景色。

sns.set_style()

可以选择的背景风格有:

  • whitegrid  白色网格
  • dark  灰色背景
  • white  白色背景
  • ticks  四周带刻度线的白色背景


sns.set()

sns.set_style(“darkgrid”)

sns.set_style(“whitegrid”)

sns.set_style(“dark”)

sns.set_style(“white”)

sns.set_style(“ticks”)


 其中sns.set()表示使用自定义样式,如果没有传入参数,则默认表示灰色网格背景风格。如果没有set()也没有set_style(),则为白色背景。

  一个可能的bug:使用relplot()方法绘制出的图像,"ticks"样式无效。

3.3 其他

  seaborn库是基于matplotlib库而封装的,其封装好的风格可以更加方便我们的绘图工作。而matplotlib库常用的语句,在使用seaborn库时也依然有效。

  关于设置其他风格相关的属性,如字体,这里有一个细节需要注意的是,这些代码必须写在sns.set_style()的后方才有效。如将字体设置为黑体(避免中文乱码)的代码:


plt.rcParams[‘font.sans-serif’] = [‘SimHei’]


  如果在其后方设置风格,则设置好的字体会设置的风格覆盖,从而产生警告。其他属性也同理。

3.2 边框控制

sns.despine()方法

# 移除顶部和右部边框,只保留左边框和下边框
sns.despine()
# 使两个坐标轴相隔一段距离(以10长度为例)
sns.despine(offet=10,trim=True)
# 移除左边框
sns.despine(left=True)
# 移除指定边框 (以只保留底部边框为例)
sns.despine(fig=None, ax=None, top=True, right=True, left=True, bottom=False, offset=None, trim=False)

4. 绘制 散点图

使用seaborn库 绘制散点图,可以使用replot()方法,也可以使用scatter()方法。

replot方法的参数kind默认是’scatter’,表示绘制散点图。

hue参数表示 在该一维度上,用颜色区分

①对A属性值和数据序号绘制散点图,红色散点,灰色网格,保留左、下边框

sns.set_style(‘darkgrid’)

plt.rcParams[‘font.sans-serif’] = [‘SimHei’]

sns.relplot(x=‘数据序号’, y=‘A属性值’, data=df1, color=‘red’)

plt.show()

1.png

②对A属性值和数据序号绘制散点图,散点根据产品类型的不同显示不同的颜色,

白色网格,左、下边框:

sns.set_style(‘whitegrid’)

plt.rcParams[‘font.sans-serif’] = [‘SimHei’]

sns.relplot(x=‘数据序号’, y=‘A属性值’, hue=‘产品类型’, data=df1)

plt.show()

2.png

③将A属性、B属性、C属性三个字段的值用不同的样式绘制在同一张图上(绘制散点图),x轴数据是[0,2,4,6,8…]

ticks风格(四个方向的框线都要),字体使用楷体

sns.set_style(‘ticks’)

plt.rcParams[‘font.sans-serif’] = [‘STKAITI’]

df2 = df1.copy()

df2.index = list(range(0, len(df2)*2, 2))

dfs = [df2[‘A属性值’], df2[‘B属性值’], df2[‘C属性值’]]

sns.scatterplot(data=dfs)

plt.show()

image.png

5. 绘制 折线图

使用seaborn库绘制折线图, 可以使用replot()方法,也可以使用lineplot()方法。

5.1 使用 replot()方法

sns.replot()默认绘制的是散点图,绘制折线图只需吧参数kind改为"line"。

需求:绘制A属性值与数据序号的折线图,

灰色网格,全局字体为楷体;并调整标题、两轴标签 的字体大小,

以及坐标系与画布边缘的距离(设置该距离是因为字体没有显示完全):

sns.set(rc={‘font.sans-serif’: “STKAITI”})

sns.relplot(x=‘数据序号’, y=‘A属性值’, data=df1, color=‘purple’, kind=‘line’)

plt.title(“绘制折线图”, fontsize=18)

plt.xlabel(‘num’, fontsize=18)

plt.ylabel(‘A属性值’, fontsize=16)

plt.subplots_adjust(left=0.15, right=0.9, bottom=0.1, top=0.9)

plt.show()

3.png

需求:绘制不同产品类型的A属性折线(三条线一张图),whitegrid风格,字体楷体。

sns.set_style(“whitegrid”)

plt.rcParams[‘font.sans-serif’] = [‘STKAITI’]

sns.relplot(x=‘数据序号’, y=‘A属性值’, hue=‘产品类型’, data=df1, kind=‘line’)

plt.title(“绘制折线图”, fontsize=18)

plt.xlabel(‘num’, fontsize=18)

plt.ylabel(‘A属性值’, fontsize=16)

plt.subplots_adjust(left=0.15, right=0.9, bottom=0.1, top=0.9)

plt.show()

4.png

  需求:将A属性、B属性、C属性三个字段的值用不同的样式绘制在同一张图上(绘制折线图),x轴数据是[0,2,4,6,8…]

     darkgrid风格(四个方向的框线都要),字体使用楷体,并加入x轴标签,y轴标签和标题。边缘距离合适。

sns.set_style(‘darkgrid’)

plt.rcParams[‘font.sans-serif’] = [‘STKAITI’]

df2 = df1.copy()

df2.index = list(range(0, len(df2)*2, 2))

dfs = [df2[‘A属性值’], df2[‘B属性值’], df2[‘C属性值’]]

sns.relplot(data=dfs, kind=“line”)

plt.title(“绘制折线图”, fontsize=18)

plt.xlabel(‘num’, fontsize=18)

plt.ylabel(‘A属性值’, fontsize=16)

plt.subplots_adjust(left=0.15, right=0.9, bottom=0.1, top=0.9)

plt.show()

5.png

  多重子图

横向多重子图 col

sns.set_style(‘darkgrid’)

plt.rcParams[‘font.sans-serif’] = [‘STKAITI’]

ssns.relplot(data=df1, x=“A属性值”, y=“B属性值”, kind=“line”, col=“厂商编号”)

plt.subplots_adjust(left=0.05, right=0.95, bottom=0.1, top=0.9)

plt.show()

6.png

纵向多重子图 row

sns.set_style(‘darkgrid’)

plt.rcParams[‘font.sans-serif’] = [‘STKAITI’]

sns.relplot(data=df1, x=“A属性值”, y=“B属性值”, kind=“line”, row=“厂商编号”)

plt.subplots_adjust(left=0.15, right=0.9, bottom=0.1, top=0.95)

plt.show()

7.png

5.2 使用 lineplot()方法

使用lineplot()方法绘制折线图,其他细节基本同上,示例代码如下:

sns.set_style(‘darkgrid’)

plt.rcParams[‘font.sans-serif’] = [‘STKAITI’]

sns.lineplot(x=‘数据序号’, y=‘A属性值’, data=df1, color=‘purple’)

plt.title(“绘制折线图”, fontsize=18)

plt.xlabel(‘num’, fontsize=18)

plt.ylabel(‘A属性值’, fontsize=16)

plt.subplots_adjust(left=0.15, right=0.9, bottom=0.1, top=0.9)

plt.show()

8.png

sns.set_style(‘darkgrid’)

plt.rcParams[‘font.sans-serif’] = [‘STKAITI’]

df2 = df1.copy()

df2.index = list(range(0, len(df2)*2, 2))

dfs = [df2[‘A属性值’], df2[‘B属性值’], df2[‘C属性值’]]

sns.lineplot(data=dfs)

plt.title(“绘制折线图”, fontsize=18)

plt.xlabel(‘num’, fontsize=18)

plt.ylabel(‘A属性值’, fontsize=16)

plt.subplots_adjust(left=0.15, right=0.9, bottom=0.1, top=0.9)

plt.show()

9.png

目录
相关文章
|
6月前
|
数据可视化 关系型数据库 MySQL
基于python大数据的的海洋气象数据可视化平台
针对海洋气象数据量大、维度多的挑战,设计基于ECharts的可视化平台,结合Python、Django与MySQL,实现数据高效展示与交互分析,提升科研与决策效率。
|
7月前
|
机器学习/深度学习 数据可视化 搜索推荐
基于python的汽车数据可视化、推荐及预测系统
本研究围绕汽车数据可视化、推荐及预测系统展开,结合大数据与人工智能技术,旨在提升用户体验与市场竞争力。内容涵盖研究背景、意义、相关技术如 Python、ECharts、协同过滤及随机森林回归等,探讨如何挖掘汽车数据价值,实现个性化推荐与智能预测,为汽车行业智能化发展提供支持。
|
7月前
|
数据采集 Web App开发 自然语言处理
新闻热点一目了然:Python爬虫数据可视化
新闻热点一目了然:Python爬虫数据可视化
|
7月前
|
数据采集 数据可视化 关系型数据库
基于python大数据的电影数据可视化分析系统
电影分析与可视化平台顺应电影产业数字化趋势,整合大数据处理、人工智能与Web技术,实现电影数据的采集、分析与可视化展示。平台支持票房、评分、观众行为等多维度分析,助力行业洞察与决策,同时提供互动界面,增强观众对电影文化的理解。技术上依托Python、MySQL、Flask、HTML等构建,融合数据采集与AI分析,提升电影行业的数据应用能力。
|
7月前
|
数据采集 搜索推荐 数据可视化
基于python大数据的商品数据可视化及推荐系统
本系统基于Python、Django与ECharts,构建大数据商品可视化及推荐平台。通过爬虫获取商品数据,利用可视化技术呈现销售趋势与用户行为,结合机器学习实现个性化推荐,助力电商精准营销与用户体验提升。
|
7月前
|
数据可视化 大数据 数据挖掘
基于python大数据的招聘数据可视化分析系统
本系统基于Python开发,整合多渠道招聘数据,利用数据分析与可视化技术,助力企业高效决策。核心功能包括数据采集、智能分析、可视化展示及权限管理,提升招聘效率与人才管理水平,推动人力资源管理数字化转型。
|
8月前
|
搜索推荐 算法 数据可视化
基于python大数据的招聘数据可视化及推荐系统
本研究聚焦于基于协同过滤的就业推荐系统设计与实现。随着就业压力增大和信息技术发展,传统求职方式面临挑战。通过分析用户行为与职位特征,协同过滤技术可实现个性化职位推荐,提升求职与招聘效率。研究涵盖系统架构、数据采集、算法实现及可视化展示,旨在优化就业匹配,促进人才与岗位精准对接,助力就业市场智能化发展。
|
机器学习/深度学习 数据采集 人工智能
Python数据分析 | seaborn工具与数据可视化
对于使用Python快捷地进行数据分析可视化而言,Seaborn是一个简单易用的选择。Seaborn 核心库进行了更高阶的 API 封装,可以轻松地画出配色更加舒服、图形元素的样式更加细腻的图形。
741 0
Python数据分析 | seaborn工具与数据可视化
|
7月前
|
数据采集 机器学习/深度学习 人工智能
Python:现代编程的首选语言
Python:现代编程的首选语言
1060 102
|
7月前
|
数据采集 机器学习/深度学习 算法框架/工具
Python:现代编程的瑞士军刀
Python:现代编程的瑞士军刀
435 104

推荐镜像

更多