Matplotlib和Seaborn数据可视化

目录

Matplotlib图表绘制

准备工作

折线图line

柱状图bar

水平条形图barh

饼图pie

散点图scatter

气泡图csatter

箱线图boxplot

直方图hist

蜂巢图hexbin

Seaborn图表绘制

准备数据

关系散点图scatterplot

关系散点线形图replot

分类散点图stripplot

分类小提琴图violinplot

分类平均值分布图barplot

分类技计数图countplot

矩形热力图heatmap

成对关系图pairplot


Matplotlib图表绘制

准备工作

复制代码
import pandas as pd

anscombe = pd.read_csv('../data/e_anscombe.csv') # 资料中提供了这份数据
print(anscombe)

df1 = anscombe[anscombe['dataset']=='I']
df2 = anscombe[anscombe['dataset']=='II']
df3 = anscombe[anscombe['dataset']=='III']
df4 = anscombe[anscombe['dataset']=='IV']

折线图line

  • 折线图适用于时间序列数据分析、不同变量变化趋势比较、科学研究实验数据分析以及趋势预测和未来规划等多个场景。

    df1.plot() # 默认折线图
    #df1.plot(kind='line') # 结果与df1.plot()
    #df1.plot.line() # 结果与df1.plot()

    x轴是索引值,y轴是各列的具体值

    也可以通过参数指定xy轴对应的列名

    df1.plot.line(x='x', y='y')
    plt.show()

柱状图bar

  • 柱状图可应用于销售和市场分析、人口统计、学术研究、项目管理等场景,直观展示不同类别数据大小差异及分布情况,方便比较和分析。

    df1.plot.bar() # 柱状图
    df1.plot.bar(stacked=True) # 柱状堆积

    也可以通过参数指定xy轴对应的列名

    df1.plot.bar(x='x', y='y')
    plt.show()

水平条形图barh

  • 条形柱状图适用于销售业绩对比、人口统计分布展示、学术研究成果呈现、项目进度管理等众多场景,以直观的方式展现不同类别数据的大小差异,便于比较和分析各类数据的分布情况。

    df1.plot.barh() # 水平条形图
    df1.plot.barh(stacked=True) # 水平条形堆积图

    也可以通过参数指定xy轴对应的列名

    df1.plot.barh(x='x', y='y')
    plt.show()

饼图pie

  • 饼图主要应用于展示各部分占总体的比例关系,常见于市场份额分析、财务报表展示、人口构成统计等场景,能让人直观地看出不同部分在整体中的相对重要程度。

    饼图,只能展示一维数据

    参数y指定列名

    参数autopct='%.2f%%'指定显示百分比 %.2f%%表示保留2位小数

    参数radius=0.9 指定饼图直径的比例,最大为1

    参数figsize=(16, 8) 设定图片大小

    df1.plot.pie(y='x', autopct='%.2f%%', radius=0.9, figsize=(16, 8))
    plt.show()

散点图scatter

  • 散点图适用于展示两个变量之间的关系,可用于科学研究中分析变量相关性、金融领域判断资产价格关系、市场调研中探索因素关联等场景。

    指定xy轴,grid=True开启背景辅助线

    df1.plot.scatter(x='x', y='y', grid=True)
    plt.show()

气泡图csatter

  • 气泡图通常用于展示三个变量之间的关系,在市场分析中呈现不同产品的多个指标关系、科学研究中展示数据的多维特征等场景有广泛应用。

    参数s表示每个点的大小,与普通散点图相比能够描述三维数据

    df1.plot.scatter(x='x', y='y', grid=True, s=df1['x']*100)
    plt.show()

箱线图boxplot

  • 箱线图用于显示多种统计信息:最小值,1/4分位,中位数,3/4分位,最大值,以及离群值(如果有)

  • 箱线图主要应用于显示数据的分布情况,可用于质量控制中监测生产数据的稳定性、统计分析中比较多组数据的分布差异、金融领域分析股票收益的波动等场景。

    df1.boxplot()

    df1.plot.boxplot() # 报错

    plt.show()

直方图hist

  • 直方图适用于展示数据的分布形态,常见于质量控制中分析产品指标分布、统计研究中判断数据集中趋势和离散程度、市场调研中了解消费者特征分布等场景。

    描述数据出现的次数

    df1['x'].plot.hist()
    plt.show()

蜂巢图hexbin

  • 蜂巢图主要应用于复杂数据的可视化展示,可在社交网络分析中呈现关系结构、生物信息学中展示基因网络、物流网络规划中展示节点连接关系等场景。

    gridsize=12设定蜂箱格子的大小,数字越小格子越大

    df1.plot.hexbin(x='x', y='y', gridsize=12)
    plt.show()

Seaborn图表绘制

准备数据

复制代码
# 导包
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns # Anaconda内置,无需额外安装
# 加载数据
tips_df = pd.read_csv('../data/f_tips.csv')
print(tips_df)

关系散点图scatterplot

复制代码
# 关系型散点图
# 指定数据集,指定x轴为消费订单金额,y轴为消费金额,
# 散点图通用的可选参数 hue='sex'通过颜色指定分组
# 散点图通用的可选参数 style='smoker' 通过形状指定分组
# 散点图通用的可选参数 size='time' 通过大小指定分组
sns.scatterplot(
    data=tips_df, 
    x='total_bill', 
    y='tip', 
    hue='sex', 
    style='smoker', 
    size='time'
)
plt.show()

关系散点线形图replot

复制代码
# replot关系散点图
sns.relplot(data=tips_df, x='total_bill', y='tip') # 默认 kind='scatter'
sns.relplot(data=tips_df, x='total_bill', y='tip', kind='line')
plt.show()

分类散点图stripplot

复制代码
# stripplot分类散点图
f = plt.figure()
f.add_subplot(2,1,1)
# 按照x属性所对应的类别分别展示y属性的值,适用于分类数据
# 不同饭点的账单总金额的散点图
sns.stripplot(data=tips_df, x='time', y='total_bill')
f.add_subplot(2,1,2)
# hue通用参数按颜色划分
# jitter=True 当数据点重合较多时,尽量分散的展示数据点
# dodge=True 拆分分类
sns.stripplot(data=tips_df, x='time', y='total_bill', jitter=True, dodge=True, hue='day')
plt.show()
复制代码
# 下边的代码只能输出一张图表
sns.stripplot(data=tips_df, x='time', y='total_bill')
sns.stripplot(data=tips_df, x='time', y='total_bill', jitter=True, dodge=True, hue='day')
plt.show()
# 所以我们使用下面的方法进行多图的输出
# f = plt.figure() # 创建画布
# f.add_subplot(2,1,1) # 在画布上申请图表空间,参数2,1,1表示2行1列中的第1个
# 图1 # sns.stripplot(data=tips_df, x='time', y='total_bill')
# f.add_subplot(2,1,2) # 在画布上申请图表空间,参数2,1,2表示2行1列中的第2个
# 图2 # sns.stripplot(data=tips_df, x='time', y='total_bill', jitter=True, dodge=True, hue='day')
# plt.show()

分类小提琴图violinplot

复制代码
# violinplot分类小提琴
# 下图分别描述午餐账单、晚餐账单的最大值、最小值、三个四分位数,以及所有账单金额出现的次数(频率)
sns.violinplot(data=tips_df, x='time', y='total_bill')
plt.show()

分类平均值分布图barplot

复制代码
# 下图中黑色的粗线条展示了数据的分布(误差线), 线条越短, 数据分布越均匀
# 下图中每个柱的顶点就是该分类y指定列的平均值
sns.barplot(data=tips_df, x='day', y='total_bill')
plt.show()

分类技计数图countplot

复制代码
# 按x指定的列值分组统计出现次数
sns.countplot(data=tips_df, x='day')
plt.show()

矩形热力图heatmap

复制代码
# 热力图
# 男女在午餐晚餐的平均消费
new_df = tips_df.pivot_table(index='sex', columns='time', values='total_bill', aggfunc='mean')
print(new_df)
# 输出为热力图:男性在晚餐花费最多
sns.heatmap(data=new_df)
plt.show()

成对关系图pairplot

复制代码
# pairplot成对比关系图
sns.pairplot(tips_df)
#sns.pairplot(df) # 全部数值列进行两两组合
#sns.pairplot(df, vars=['列名1', '列名2']) # 指定要组合展示的列名
plt.show()
  • 按右上、左下、中间轴线(左上至右下)的方式分别设置图表类型

    pair_grid = sns.PairGrid(tips_df)

    中间轴线上的图设为kdeplot

    pair_grid.map_diag(sns.kdeplot)

    右上设为lineplot

    pair_grid.map_upper(sns.lineplot)

    左下设为scatterplot

    pair_grid.map_lower(sns.scatterplot)
    plt.show()

  • 将 Seaborn 提供的样式声明代码 sns.set() 放置在绘图前,就可以设置图像的样式

    sns.set(
    context='paper',
    style='darkgrid',
    palette='deep',
    font='sans-serif',
    font_scale=1
    )

    context: 参数控制着默认的画幅大小,分别有 {paper, notebook, talk, poster} 四个值。其中,poster > talk > notebook > paper。

    style:参数控制默认样式,分别有 {darkgrid, whitegrid, dark, white, ticks},你可以自行更改查看它们之间的不同。

    palette:参数为预设的调色板。分别有 {deep, muted, bright, pastel, dark, colorblind} 等,你可以自行更改查看它们之间的不同。

    font:用于设置字体

    font_scale:设置字体大小

    sns.scatterplot(data=tips_df, x='total_bill', y='tip', hue='sex', style='smoker', size='time')
    plt.show()

相关推荐
时光追逐者15 小时前
在 Blazor 中使用 Chart.js 快速创建数据可视化图表
开发语言·javascript·信息可视化·c#·.net·blazor
千鼎数字孪生-可视化15 小时前
3D模型给可视化大屏带来了哪些创新,都涉及到哪些技术栈。
ui·3d·信息可视化·数据分析
大美B端工场-B端系统美颜师1 天前
静态图表 VS 动态可视化,哪种更适合数据故事讲述?
信息可视化·数据挖掘·数据分析
eBest数字化转型方案1 天前
eBest AI智能报表:用自然语言对话解锁企业数据生产力
信息可视化
斯汤雷1 天前
Matlab绘图案例,设置图片大小,坐标轴比例为黄金比
数据库·人工智能·算法·matlab·信息可视化
码视野2 天前
基于SpringBoot的河道水情大数据可视化分析平台设计与实现(源码+论文+部署讲解等)
spring boot·后端·物联网·信息可视化·论文·本科毕业论文·计算机专业毕业论文
大美B端工场-B端系统美颜师2 天前
定制化管理系统与通用管理系统,谁更胜一筹?
人工智能·信息可视化·数据挖掘·数据分析
程序员的世界你不懂2 天前
数据处理专题(四)
信息可视化
月走乂山2 天前
nocobase + Python爬虫实现数据可视化
爬虫·python·低代码·信息可视化
橘猫云计算机设计2 天前
基于ssm的食物营养成分数据分析平台设计与实现(源码+lw+部署文档+讲解),源码可白嫖!
后端·python·信息可视化·数据挖掘·数据分析·django·毕业设计