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

news2024/11/16 3:37:27

在这里插入图片描述

文章目录

  • 专栏导读
  • 1、Matplotlib棉棒图stem()基本语法
  • 2、Matplotlib棉棒图stem()定义样式
    • 2.1linefmt参数
    • 2.2markerfmt参数
    • 2.3举例一:直线样式
    • 2.4举例二:圆点样式
  • 3、棉棒图案例实战
    • 3.1绘制每月销量的棉棒图
    • 3.2绘制每月销量与平均销量之差

专栏导读

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

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

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

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

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

《数据分析之道-Matplotlib》
【数据分析之道-Matplotlib(一)】Matplotlib Pyplot
【数据分析之道-Matplotlib(二)】Matplotlib 绘图标记
【数据分析之道-Matplotlib(三)】Matplotlib 绘制子图
【数据分析之道-Matplotlib(四)】Matplotlib散点图
【数据分析之道-Matplotlib(五)】Matplotlib柱状图
【数据分析之道-Matplotlib(六)】Matplotlib饼图
【数据分析之道-Matplotlib(七)】Matplotlib直方图
【数据分析之道-Matplotlib(八)】Matplotlib箱线图

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

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

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

常用参数的含义如下:

  • 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()

在这里插入图片描述

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()

在这里插入图片描述

使用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()

在这里插入图片描述

在这个例子中,我们使用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()

在这里插入图片描述

销量峰值:我们可以看到在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()

在这里插入图片描述

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


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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/655741.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Prometheus介绍安装和快速入门

Prometheus介绍安装和快速入门 1、Prometheus介绍 1.1 什么是 Prometheus? Prometheus&#xff08;普罗米修斯&#xff09;是古希腊的一个神明&#xff0c;名字的意思是「先见之明」。从它的名字可以看出&#xff0c; Prometheus 是做「先见之明」的监控告警用途。维基百科…

HJ26 字符串排序

题目&#xff1a; HJ26 字符串排序 题解&#xff1a; 规则 1 &#xff1a;英文字母从 A 到 Z 排列&#xff0c;不区分大小写。 统一转换&#xff0c;通过减去对应字母的起始值&#xff0c;得到一个相对值&#xff0c;抹平大小写&#xff0c;例如&#xff1a;B - A&#xff…

【Java项目】使用LruCache提高DSP广告主需求方 (Demand Side Platform)系统性能

文章目录 背景LruCache简介LruCache在DSP系统中的应用场景LruCacheRedis增加LruCache数据过期清除机制ConcurrentHashMapLruCache零拷贝机制 源码 背景 我之前工作的一家公司是一家传媒公司&#xff0c;公司的主要盈利方式为在公司项目中接入广告&#xff0c;以及自媒体广告宣…

Windows下编译安装Acise

Acise是济南友泉软件公司自主研发的一套跨平台的通用CAx(CAD/CAE)软件开发框架&#xff0c;本文旨在记录Windows下编译安装Acise的流程。 零、系统环境 操作系统Windows 10编译器Visual Studio 2019 CommunityCMake2.24.2Boost1.80.0Qt5.14.0OpenCASCADE7.6.0VTK9.0.0 一、依…

Linux之线程安全(下)

文章目录 前言一、Linux线程互斥1.mutex的理解锁原子性互斥锁实现原子性的原理 2.mutex的封装——Mutex.hpp3.可重入和线程安全可重入线程安全线程安全不一定是可重入的&#xff0c;而可重入函数一定是线程安全的。 4.死锁概念造成死锁的四个必要条件如何避免死锁 二、Linux线程…

Mendix低代码开发

Mendix低代码开发 目录概述需求&#xff1a; 设计思路实现思路分析1.URL管理2.LL3.Mendix 低代码可视化开发4.Mendix 低代码可视化开发 参考资料和推荐阅读 Survive by day and develop by night. talk for import biz , show your perfect code,full busy&#xff0c;skip har…

许多智能算法并不智能

数学的精髓在于不断寻找简洁而优美的解决方法&#xff0c;而智能的精髓也在于尽可能地避免繁琐的计算&#xff0c;通过更高效的方式来解决问题。从实践角度看&#xff0c;现代人工智能技术的发展&#xff0c;正是基于这个思路不断推进的。在机器学习领域中&#xff0c;人们通过…

【C语言复习】第二篇、VS2017软件的使用以及常用小技巧

目录 1、VS2017软件无法打开stdio.h文件的解决办法 2、VS2017软件解决scanf函数问题以及如何建立初始模板 2.1、visual Studio使用scanf函数出现报错问题 2.2、如何实现新建一个.c文件就有初始模板 3、VS2017软件如何显示代码行号&#xff1f; 4、VS2017软件如何快速复制…

Redis(Windows版)安装

Redis安装过程 目前只是Windows下安装&#xff0c;后续会添加linux下安装过程 Windows安装 下载地址&#xff1a;Releases tporadowski/redis (github.com) Redis安装要根据系统平台的实际情况而定&#xff0c;我使用的是免安装的 下载完成&#xff0c;解压之后打开文件夹…

怎么计算 flex-shrink 的缩放尺寸

计算公式: 子元素的宽度 - (子元素的宽度的总和 - 父盒子的宽度) * (某个元素的flex-shrink / flex-shrink总和) 面试问题是这样的下面 left 和 right 的宽度分别是多少 * {padding: 0;margin: 0;}.container {width: 500px;height: 300px;display: flex;}.left {width: 500px…

MySQL8.0安装过程中starting the server报错的解决方案(史上最详细)

MySQL8.0安装过程中starting the server报错的解决方案&#xff08;史上最详细&#xff09; 目录 MySQL8.0安装过程中starting the server报错的解决方案&#xff08;史上最详细&#xff09;报错情况&#xff1a;starting the server报错解决办法 报错情况&#xff1a;starting…

盘点开源ChatGPT建立的私有知识库

ChatGPT 可以落地的一个行业就是建立私有知识库&#xff0c;将ChatGPT落地TO B行业&#xff0c;可基于ChatGPT和私有数据构建智能知识库和个性化AI。 这个应该是ChatGPT 最热的一个创业方向。 可能出现的产品&#xff0c;有智能AI客服、企业内部/外部知识库、个人知识库&…

C++(9):顺序容器

顺序容器概述 所有顺序容器都提供了快速顺序访问元素的能力。 vector//可变大小数组。支持快速随机访问。在尾部之外的位置插入或删除元素可能很慢 deque//双端队列。支持快速随机访问。在头尾位置插入/删除速度很快 list//双向链表。只支持双向顺序访问。在list中任何位置进…

oVirt 4.4.10三节点超融合集群安装配置及集群扩容(二)

在上节安装完成3节点集群后&#xff0c;在此基础上扩容到6节点<oVirt每次扩容后的容量必须是3的倍数> 操作步骤 在原始第一台服务器访问https://192.168.5.100:9090/,在"Virtualiztion"->“Hosted Engin"下点击"Manage Gluster” 点击"Ex…

「已解决」已有Umi Antd 环境下安装 formily v2 依赖报错问题

背景 在一个项目中想引入 formily v2 试一下这个针对复杂表单的解决方案&#xff0c;结果发现安装后报错&#xff0c;目前已有的第三方库大致为 “ant-design/icons”: “^5.0.1”, “ant-design/pro-components”: “^2.4.4”, “umijs/max”: “^4.0.68”, “ahooks”: “^3…

【软考程序员学习笔记】——操作系统

目录 &#x1f34a;一、操作系统的五大功能 &#x1f34a;二、操作系统的分类 &#x1f34a;三、进程三态模型 &#x1f34a;四、信号量机制 &#x1f34a;五、PV机制、互斥和同步 &#x1f34a;六、虚拟存储器 &#x1f34a;七、设备管理 直接程序控制 &#x1f34a;八…

PyQt5桌面应用开发(21):界面设计结果自动测试(二)

本文目录 PyQt5桌面应用系列TDDUI为什么&#xff1f; 开发任务任务设计小码的工作unittest函数一览表 UI单元测试代码控件代码测试报告 总结 PyQt5桌面应用系列 PyQt5桌面应用开发&#xff08;1&#xff09;&#xff1a;需求分析 PyQt5桌面应用开发&#xff08;2&#xff09;&a…

Python基础(2)——Python解释器

Python基础&#xff08;2&#xff09;——Python解释器 文章目录 Python基础&#xff08;2&#xff09;——Python解释器目标一. 解释器的作用二. 下载Python解释器三. 安装Python解释器总结 目标 解释器的作用下载Python解释器安装Python解释器 一. 解释器的作用 Python解释…

Golang每日一练(leetDay0099) 单词规律I\II Word Pattern

目录 290. 单词规律 Word Pattern &#x1f31f;  291. 单词规律 II Word Pattern ii &#x1f31f;&#x1f31f; &#x1f31f; 每日一练刷题专栏 &#x1f31f; Rust每日一练 专栏 Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏 Java每日一练 专栏 …

ubuntu 20.04 arm 平台交叉编译 glib 库

glib 是什么&#xff1f; glib 是一个比较强大的 软件库&#xff0c;类似于 libc 库 交叉编译 当前需要移植到 arm&#xff08;ARM 32位&#xff09;平台上&#xff0c;需要使用 arm 交叉编译工具链编译 glib 环境准备 ubuntu 20.04 安装较新版本的 meson &#xff1a; &g…