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

news/2024/11/18 14:54:42/

在这里插入图片描述

文章目录

  • 专栏导读
  • 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 pltx = [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 pltx = [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 pltx = [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.ppmy.cn/news/431910.html

相关文章

关于jmeter body Data 传参报错message“:“\u7528\u6237\u540d \u4e0d\u80fd\u4e3a\u7a7a\u3002“的解决方法

因为之前一直使用Parameters传参或者使用postman 突发奇想想用用jmeter测测接口&#xff0c;POST接口习惯性的把参数写到Body Date里 然后就发现报错了 后面一直以为是json格式没写对 弄了半天发现jmeter Body Date传参需要加HTTP信息请求体管理器来说明Body Date的类型 步骤 …

python写入文件乱码\u559c\u6b22\u4e00\u4e2a\u4eba

当python爬虫出来的数据在txt文件显示为\u559c\u6b22\u4e00\u4e2a\u4eba乱码时&#xff0c;解决方案为&#xff1a; def save_content_list(self, content_list): # 保存with open("qiushi.txt", "a",encoding"gbk") as f:for content in conte…

unity将 \u4E00 这种 编码 转汉字 方法

unity中 直接使用 JsonMapper.ToJson(对象)&#xff0c;取到的字符串&#xff0c;里面汉字可能是\u4E00类似这种 其实也不用转&#xff0c;服务器会通过类似fastjson发序列化的方式&#xff0c;将json转对象&#xff0c;获取对象的值就是中文 但是有时服务器要求将传参中字符串…

2022 RoboCom 世界机器人开发者大赛-本科组(省赛)RC-u4 攻略分队

本题思路较为清晰&#xff0c;考场时结构体内部数组开小了&#xff0c;导致wa。 #include <bits/stdc.h>using namespace std; #define ll long long const int N 1e5 10; int v[10]; int a[10][4]; struct node {int b[7];int num1 0;int c[7];int num2 0;int dx;i…

U4D和Blender怎么选

C4D Blender 怎么选 建模 Blender 更倾向于硬表面模型和角色模型C4D 广泛 材质、灯光、渲染 C4D oc渲染器 贵Blender 自带Cycles渲染器可选GPU或CPU渲染 动画 C4D 运动图形系统Blender 角色动画系统 插件 C4D支持的xparticle粒子功能特别强大 C4D结合Ps Ae多用于广告领…

python爬虫或web中出现\\u4e00unicode字符串的原因

我们的python在爬虫或web中,默认是不需要我们获取进行编码和解码的 因为框架自动帮我们编码然后返回给我们,但是一般用的都是UTF-8,如果这个数据的编码方式是unicode-escape怎么办呢,那么我们就会获得一堆类似于"\u4e00"这样的字符串 解决办法: unicode_str \\u4e…

Atmega32U4烧写Bootloader

熔丝位设置 leonardo.bootloader.low_fuses0xff leonardo.bootloader.high_fuses0xd8 leonardo.bootloader.extended_fuses0xcb leonardo.bootloader.unlock_bits0x3F leonardo.bootloader.filecaterina/Caterina-Leonardo.hex导入Flash 位置在 D:\Arduino\hardware\arduino…

开鸿智谷公司Niobe U4开发板正式合入OpenHarmony主干

近期&#xff0c;拓维信息旗下湖南开鸿智谷数字产业发展有限公司&#xff08;简称“开鸿智谷公司”&#xff09;基于ESP32系列芯片打造的Niobe U4开发板正式合入OpenAtom OpenHarmony&#xff08;简称“OpenHarmony”&#xff09;社区主干。本次合入的代码版本为单核代码&#…