• 【数据分析之道-Matplotlib(九)】Matplotlib棉棒图


    在这里插入图片描述

    专栏导读

    ✍ 作者简介:i阿极,CSDN 数据分析领域优质创作者,专注于分享python数据分析领域知识。

    本文录入于《数据分析之道》,本专栏针对大学生、初级数据分析工程师精心打造,对python基础知识点逐一击破,不断学习,提升自我。
    订阅后,可以阅读《数据分析之道》中全部文章内容,包含python基础语法、数据结构和文件操作,科学计算,实现文件内容操作,实现数据可视化等等。
    ✍ 其他专栏:《数据分析案例》《机器学习案例》

    😊😊😊如果觉得文章不错或能帮助到你学习,可以点赞👍收藏📁评论📒+关注哦!👍👍👍

    📜📜📜如果有小伙伴需要数据集和学习交流,文章下方有交流学习区!一起学习进步!💪

    大家好,我是i阿极,本专栏的文章上过👍每日必看榜👍每周必看榜👍每月必看榜。喜欢本专栏的小伙伴们可以订阅

    1、Matplotlib棉棒图stem()基本语法

    在Matplotlib中,可以使用stem()来绘制棉棒图。棉棒图是柱状图的变形,可以把它看成特殊的柱状图。
    stem()函数用于绘制离散数据的垂直线图,常用于显示离散的数据点以及它们的垂直变化。
    stem()函数的基本语法如下:

    plt.stem(x, y, linefmt=None, markerfmt=None, basefmt=None, bottom=None, label=None)
    
    
    • 1
    • 2

    常用参数的含义如下:

    • x:指定每个数据点的 x 坐标,可以是一个数值序列。
    • y:指定每个数据点的 y 坐标,可以是一个数值序列。
    • linefmt(可选):指定连接数据点的线的样式,如颜色、线型等。
    • markerfmt(可选):指定数据点的标记的样式,如颜色、形状等。
    • basefmt(可选):指定基线(零线)的样式。
    • bottom(可选):指定基线(零线)的位置,默认为0。
    • label(可选):指定图例中的标签。

    下面是一个简单的示例:

    import matplotlib.pyplot as plt
    
    x = [1, 2, 3, 4, 5]
    y = [2, 4, 1, 5, 3]
    
    plt.stem(x, y, linefmt='r-', markerfmt='ro', basefmt='k-', label='data')
    
    plt.xlabel('X')
    plt.ylabel('Y')
    plt.title('Stem Plot')
    plt.legend()
    
    plt.show()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    在这里插入图片描述

    2、Matplotlib棉棒图stem()定义样式

    为了让棉棒图更加美观,stem()提供了很多用于定义样式的参数,常用的有两个:linemt和markerfmt。

    2.1linefmt参数

    linefmt参数用于指定棉棒图的线条样式:

    取值说明
    ‘-’实线
    ‘–’虚线
    ‘-.’点划线
    ‘:’点线

    2.2markerfmt参数

    markerfmt参数用于指定棉棒图上每个数据点的标记样式:

    取值说明
    ‘.’小圆点
    ‘o’大圆点
    ‘s’正方形
    ‘d’菱形
    ‘p’五角星
    ‘h’六边形
    ‘v’倒三角形
    ‘^’正三角形
    ‘<’左三角形
    ‘>’右三角形
    ‘*’星形

    2.3举例一:直线样式

    import matplotlib.pyplot as plt
    
    x = [1, 2, 3, 4, 5]
    y = [2, 4, 1, 5, 3]
    
    plt.stem(x, y, linefmt='-.', markerfmt='ro', basefmt='k-', label='data')
    
    plt.xlabel('X')
    plt.ylabel('Y')
    plt.title('Stem Plot')
    plt.legend()
    
    plt.show()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    在这里插入图片描述

    使用stem()函数绘制棉棒图。x和y是数据点的坐标,linefmt指定了棉棒图的线条样式为点划线,markerfmt指定了数据点的标记样式为红色圆形,basefmt指定了棉棒图的基线样式为黑色实线,label指定了图例的标签为"data"。

    2.4举例二:圆点样式

    import matplotlib.pyplot as plt
    
    x = [1, 2, 3, 4, 5]
    y = [2, 4, 1, 5, 3]
    
    plt.stem(x, y, markerfmt='ro', label='data')
    
    plt.xlabel('X')
    plt.ylabel('Y')
    plt.title('Stem Plot')
    plt.legend()
    
    plt.show()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    在这里插入图片描述

    在这个例子中,我们使用markerfmt='ro’来指定圆点的样式为红色的圆点。
    除了上述示例中的圆点样式,你还可以使用其他标记字符串来自定义圆点的样式。例如,‘o’表示大圆点,’.'表示小圆点,'s’表示正方形。

    3、棉棒图案例实战

    3.1绘制每月销量的棉棒图

    import pandas as pd
    import matplotlib.pyplot as plt
    
    # 设置
    plt.rcParams["font.family"] = ["SimHei"] 
    plt.rcParams["axes.unicode_minus"] = False
    
    # 读取数据
    df = pd.read_csv(r"D:\CSDN\data\product.csv")
    # 绘制图表
    plt.stem(df["月份"], df["销量"])
    
    # 定义标题
    plt.title("每月销量棉棒图")
    plt.xlabel("月份", loc="right")
    plt.ylabel("销量", loc="top")
    # 刻度标签
    plt.xticks(range(1, 13))
    
    # 显示
    plt.show()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    在这里插入图片描述

    销量峰值:我们可以看到在3月和5月有两个销量峰值,分别为898和951。这表示在这两个月份,销量达到了最高点。
    销量低谷:销量的低谷出现在9月,销量仅为155。这表明在这个月份,销量相对较低。
    销售趋势:从图中可以看出,销量在前三个月呈上升趋势,然后在第四个月下降,并在第五个月达到最高点。之后,销量逐渐下降,直到第九个月为止。从第九个月开始,销量开始回升,并在最后一个月达到较高水平。

    3.2绘制每月销量与平均销量之差

    import matplotlib.pyplot as plt
    
    # 设置
    plt.rcParams["font.family"] = ["SimHei"] 
    plt.rcParams["axes.unicode_minus"] = False
    
    # 读取数据
    df = pd.read_csv(r"data/product.csv")
    # 求平均值
    mean = df["销量"].mean()
    # 求与平均值之差(利用广播机制)
    df["差值"] = df["销量"] - mean
    
    # 绘制图表
    plt.stem(df["月份"], df["差值"])
    
    # 定义标题
    plt.title("每月销量棉棒图")
    plt.xlabel("月份", loc="right")
    plt.ylabel("销量", loc="top")
    # 刻度标签
    plt.xticks(range(1, 13))
    
    # 显示
    plt.show()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    在这里插入图片描述

    正值差值:图中的棉棒表示每个月销量与平均销量的差值。如果棉棒在0的上方,则表示该月销量高于平均水平;如果棉棒在0的下方,则表示该月销量低于平均水平。根据图中的棉棒长度和方向,我们可以看到有些月份的销量高于平均值,而有些月份的销量低于平均值。
    趋势观察:通过观察棉棒的方向,我们可以得知销量较高的月份和销量较低的月份。如果棉棒向上,则表示销量较高;如果棉棒向下,则表示销量较低。从图中可以看出,前三个月的销量较高,而后面几个月的销量较低。


    📢文章下方有交流学习区!一起学习进步!💪💪💪
    📢首发CSDN博客,创作不易,如果觉得文章不错,可以点赞👍收藏📁评论📒
    📢你的支持和鼓励是我创作的动力❗❗❗

  • 相关阅读:
    Spring Boot Security使用 JDBC 和 MySQL 进行 RBAC,自定义登录验证,登录界面增加kaptcha验证码
    如何安装最新版Docker Compose?
    腾讯云 Web 超级播放器开发实战
    mobaxterm x11 转发Ubuntu mac
    【Docker项目实战】使用Docker部署HFish蜜罐系统
    PX4装机教程(八)常用外接传感器
    mysql跨库关联查询(dblink)
    【C++进阶】:C++类型转换
    MobLink for Flutter
    wish测评自养号,卖家怎么快速出单?
  • 原文地址:https://blog.csdn.net/AOAIYI/article/details/131256585