画图实战-Python实现某产品全年销量数据多种样式可视化
画图实战-Python实现某产品全年销量数据多种样式可视化
- 学习心得
- Matplotlib说明
- 什么是Matplotlib?
- Matplotlib特性
- Matplotlib安装
- 产品订单量-折线图
- 某产品全年订单量数据
- 数据提取和分析
- 绘制折线图
- 产品订单&销售额-条形图
- 某产品全年订单&销售额数据
- 绘制条形图
- 某产品xx-直方图
- 某产品xx-散点图
- 某产品xx-饼图
- 某产品xx-多图效果
- 总结
学习心得
- 有时候我们需要对某些数据进行分析,得到一些可视化效果图,而这些效果图可以直观展示给我们数据的变化趋势;
- 比如某产品的月销量数据、销售额的地区分布、销售增长和季节的变化情况、产品的贡献度分析等等;
- 本文主要针对某产品全年销量数据,绘制各种不同样式的图表,以不同样式展示数据;
- 学习本文建议对Python的matplotlib第三库有一定的了解。
Matplotlib说明
什么是Matplotlib?
- Matplotlib是一个Python的2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形;
- Matplotlib可生成绘图、直方图、功率谱、条形图、错误图、散点图、折线图等;
- Matplotlib是Python生态系统的一个重要组成部分,是用于可视化的绘图库;
- Matplotlib提供了一整套和matlab相似的命令API和可视化界面,可以生成出版质量级别的精美图形。
Matplotlib特性
- Matplotlib图表中的元素包含以下内容:
A、X轴和Y轴;
B、X轴和Y轴刻度;
C、X轴和Y轴标签;
D、绘图区域。
- 关于hold属性:
A、hold属性默认为True,可在一幅图中绘制多个曲线;
B、将hold属性修改为False,每一个plot都会覆盖前面的plot(这种方法不推荐,建议使用默认的)。
- 常用方法:
A、可使用grid方法为图添加网格线;
B、还可以使用其他方法,如axis方法、xlim方法、ylim方法、legend方法;
- 关于配置方面:
matplotlib配置信息是从配置文件读取的。在配置文件中可以为matplotlib的几乎所有属性指定永久有效的默认;
主要为永久配置和动态配置。
Matplotlib安装
直接使用pip安装即可:
pip install matplotlib
产品订单量-折线图
某产品全年订单量数据
- 以下是某产品全年的销量数据:
某产品 | Jan | Feb | Mar | Apr | May | Jun | Jul | Aug | Sep | Oct | Nov | Dec |
---|---|---|---|---|---|---|---|---|---|---|---|---|
订单量(indent) | 15 | 33 | 42 | 50 | 115 | 220 | 86 | 66 | 59 | 43 | 39 | 50 |
退货量(returned) | 6 | 13 | 18 | 23 | 55 | 98 | 42 | 31 | 25 | 22 | 17 | 24 |
- 全年12个月数据中,每个月对应有产品的订单量和退货量。
数据提取和分析
- 我们可以把月份用以下变量表示:
month = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]print(f"月份为:{month}")
# 输出:月份为:['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
复制运行
- 产品对应的销量分两种,一种是订单量,一种是退货量,可用两个变量来存放数据:
# 订单量
indent = [15, 33, 42, 50, 115, 20, 86, 66, 59, 43, 39, 50]# 退货量
returned = [6, 13, 18, 23, 55, 98, 42, 31, 25, 22, 17, 24]print(f"每月订单量为:{indent}")
print(f"每月退货量为:{returned}")
绘制折线图
- 折线图中我们绘制两条折线,一条是每月的退货量,一条是每月的订单量;
- 而折线就是坐标组成,这里就需要多个两个坐标,比如x1、y1、x2、y2;
- 针对我们提供的数据,可以把坐标定义为:
x1 = month y1 = indent
x2= month y2 = returned
- 那对应的代码为:
import subprocess
import sys
subprocess.check_call([sys.executable, "-m", "pip", "install", "matplotlib"])
import matplotlib.pyplot as pltmonth = ["Jan", "Feb", "Mar", "Apr","May", "Jun", "Jul", "Aug","Sep", "Oct", "Nov", "Dec"]
print(f"月份为:{month}")# 订单量
indent = [15, 33, 42, 50, 115, 20, 86, 66, 59, 43, 39, 50]# 退货量
returned = [6, 13, 18, 23, 55, 98, 42, 31, 25, 22, 17, 24]
print(f"每月订单量为:{indent}")
print(f"每月退货量为:{returned}")# 绘制折线图
plt.plot(month, indent, label='订单量',linewidth=2, color='r', marker='o',markerfacecolor='blue', markersize=8)plt.plot(month, returned, label='退货量',linewidth=2, color='y', marker='o',markerfacecolor='blue', markersize=8)plt.xlabel('月份')
plt.ylabel('数量')
plt.title('某产品全年订单销售情况')
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.legend()
# plt.show()
plt.savefig("plot.jpg")
- 运行上边代码后折线图的效果为:
产品订单&销售额-条形图
某产品全年订单&销售额数据
- 以下是某产品全年的销量数据:
订单量(indent/m1) | 10/5 | 30/7 | 50/9 | 70/11 | 90/13 | 110/15 | 130/17 | 150/19 |
---|---|---|---|---|---|---|---|---|
退货量(returned/m2) | 20/3 | 40/5 | 60/7 | 80/9 | 10011 | 120/13 | 140/15 | 160/17 |
- 图中的意思为对应的订单量的销售额和对应的退货量的价格。
绘制条形图
- 条形图中我们绘制双条形,一条是每月的退货量及对应价格,一条是每月的订单量和销售额;
- 针对我们提供的数据,可以把坐标定义为:
x1 = indent y1 = m1
x2= returned y2 = m2
- 那对应的代码为:
import subprocess
import sys
subprocess.check_call([sys.executable, "-m", "pip", "install", "matplotlib"])
import matplotlib.pyplot as plt# 订单量
indent = [10, 30, 50, 70, 90, 110, 130, 150]
# 销售额
m1 = [5, 7, 9, 11, 13, 15, 17, 19]# 退货量
returned = [20, 40, 60, 80, 100, 120, 140, 160]
# 价格
m2 = [3, 5, 7, 9, 11, 13, 15, 17]# 绘制折线图
plt.bar(indent, m1, width=3, label='订单量-销售额', color='r', )
plt.bar(returned, m2, width=3, label='退货量-价格', color='y')plt.xlabel('数量')
plt.ylabel('价格')
plt.title('某产品全年订单&销售额情况')
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.legend()
# plt.show()
plt.savefig("plot.jpg")
- 运行以上代码后效果图为:
注意:后续的数据和操作逻辑和前边的一样,为了快速了解其使用,不再描述详细的数据,仅用示例说明。
某产品xx-直方图
- 那对应的代码为:
import subprocess
import sys
subprocess.check_call([sys.executable, "-m", "pip", "install", "matplotlib"])
import matplotlib.pyplot as pltdata = [15, 33, 42, 50, 115, 20, 86, 66, 59, 43, 39, 50]
x = range(0, 100, 2)# 绘制直方图
plt.hist(data, x, rwidth=3, label='直方图', color='y')plt.xlabel('X')
plt.ylabel('Y')
plt.title('直方图')
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.legend()
# plt.show()
plt.savefig("plot.jpg")
- 运行代码后效果如下:
某产品xx-散点图
- 那对应的代码为:
import subprocess
import sys
subprocess.check_call([sys.executable, "-m", "pip", "install", "matplotlib"])
import matplotlib.pyplot as pltdata = [15, 33, 42, 50, 115, 20, 86, 66, 59, 43, 39, 50]
x = range(0, len(data))# 绘制散点图
plt.scatter(x, data, label='散点图', s=15)plt.xlabel('X')
plt.ylabel('Y')
plt.title('散点图')
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.legend()
# plt.show()
plt.savefig("plot.jpg")
- 运行代码后效果为:
某产品xx-饼图
- 对应代码为:
import subprocess
import sys
subprocess.check_call([sys.executable, "-m", "pip", "install", "matplotlib"])
subprocess.check_call([sys.executable, "-m", "pip", "install", "numpy"])
import matplotlib.pyplot as plt
import numpy as npdata = np.array([10, 20, 15, 15, 5, 5, 30])plt.pie(data,labels=['P1', 'P2', 'P3', 'P4', 'P5', 'P6', 'P7'],colors=["#8B008B", "#FF1493", "#4B0082", "#B0C4DE", "#E1FFFF", "#008080", "#00FF7F"],explode=(0, 0, 0.3, 0, 0, 0.2, 0), autopct='%.2f%%',)
plt.title('饼图')
plt.rcParams['font.sans-serif'] = ['SimHei']
# plt.show()
plt.savefig("plot.jpg")
- 运行代码效果为:
某产品xx-多图效果
- 对应代码为:
import subprocess
import sys
subprocess.check_call([sys.executable, "-m", "pip", "install", "matplotlib"])
subprocess.check_call([sys.executable, "-m", "pip", "install", "numpy"])
import matplotlib.pyplot as plt
import numpy as npx = np.array([10, 50])
y = np.array([10, 80])
plt.subplot(2, 2, 1)
plt.plot(x, y)
plt.title("图1")x = np.array([10, 20, 30, 40])
y = np.array([10, 30, 50, 110])
plt.subplot(2, 2, 2)
plt.plot(x, y)
plt.title("图2")x = np.array([10, 20, 30, 40])
y = np.array([50, 60, 70, 80])
plt.subplot(2, 2, 3)
plt.plot(x, y)
plt.title("图3")x = np.array([20, 25, 30, 35])
y = np.array([40, 45, 50, 55])
plt.subplot(2, 2, 4)
plt.plot(x, y)
plt.title("图4")plt.suptitle("多图显示")
plt.rcParams['font.sans-serif'] = ['SimHei']
#plt.show()
plt.savefig("plot.jpg")
- 运行代码后的效果为:
总结
Python实现某产品全年销量数据多种样式可视化,主要是应用了python的matplotlib库进行绘制各种图表,除了以上的几种图表,还有柱状图、网格图等等。学习的时候建议使用真实的数据,可以真正达到分析问题的效果。
相关文章:
画图实战-Python实现某产品全年销量数据多种样式可视化
画图实战-Python实现某产品全年销量数据多种样式可视化 学习心得Matplotlib说明什么是Matplotlib?Matplotlib特性Matplotlib安装 产品订单量-折线图某产品全年订单量数据数据提取和分析绘制折线图 产品订单&销售额-条形图某产品全年订单&销售额数据绘制条形…...
YOLOv9详解
1.概述 在逐层进行特征提取和空间转换的过程中,会损失大量信息,例如图中的马在建模过程中逐渐变得模糊,从而影响到最终的性能。YOLOv9尝试使用可编程梯度信息PGI解决这一问题。 具体来说, PGI包含三个部分,࿰…...
CRON 定时任务
检测是否安装了 cron systemctl status crond 如果没有安装使用 sudo yum install cronie 编辑 crontab -e * * * * * php /path/your.php Esc键 然后输入 :q 退出 :wq 保存并退出 第一个 * 表示分钟,表示每分钟执行一次。第二个 * 表示小时,表示每…...
环境安装篇 之 Kind 搭建 kubernetes 测试集群
云原生学习路线导航页(持续更新中) 本文是 环境安装 系列文章,介绍 使用Kind工具 快速安装 kubernetes 测试集群的详细步骤 1.Kind简介 Kind 是一个使用 Docker 容器“节点”运行本地 Kubernetes 集群的工具。Kind 主要用于测试kubernetes本…...
每日五道java面试题之mybatis篇(四)
目录: 第一题. 映射器#{}和${}的区别第二题. 模糊查询like语句该怎么写?第三题. 在mapper中如何传递多个参数?第四题. Mybatis如何执行批量操作第五题 MyBatis框架适用场景 第一题. 映射器#{}和${}的区别 #{}是占位符,预编译处理;${}是拼接…...
camunda流程引擎的插件如何使用
camunda工作流引擎是一个开放的架构,除了流程引擎默认提供的功能外,开发者可以通过流程插件机制,对流程引擎功能进行扩展。即流程引擎插件是流程引擎配置的扩展。插件必须提供 ProcessEnginePlugin 接口的实现。 下面以全局任务事件监听器为…...
Vue打包问题汇总:legacy、runtime.js
问题一:Vue3.x的版本中build后dist文件中出现legacy的js文件 解决办法是添加兼容的浏览器 package.json "browserslist": ["> 1%","last 2 versions","not dead","not ie 11" ]参考 Vue3.x的版本中build后…...
挑战杯 车位识别车道线检测 - python opencv
0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 深度学习 机器视觉 车位识别车道线检测 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🥇学长这里给一个题目综合评分(每项满分5分) …...
c++面经
1. 僵尸进程 僵尸进程(Zombie Process)在操作系统中指的是那些已经执行完毕,但其父进程尚未对其进行善后处理(例如读取子进程的状态信息或者执行回收资源的操作)的进程。在Unix和类Unix系统࿰…...
js中副作用的消除还解决了并行计算带来的竞争问题,具体是如何解决的
在JavaScript中,副作用是指对外部环境产生的可观察的变化,例如修改全局变量、修改DOM元素等。副作用的存在可能导致代码的可维护性和可测试性下降,并且在并行计算中可能引发竞争问题。 不纯的函数有可能访问同一块资源,如果先后调…...
3/14/24数据结构、线性表
目录 数据结构 数据结构三要素 逻辑结构 存储结构 数据运算 时间复杂度 空间复杂度 线性表 线性表定义 静态分配 动态分配 线性表插入 线性表删除 十天的时间学完了C语言督学课程,最后终于是可以投入到408的科目学习当中。关于数据结构和算法的学习很多部…...
软件测试面试200问,面试看这就够了。。。
🍅 视频学习:文末有免费的配套视频可观看 🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 Part1 1、你的测试职业发展是什么? 测试经验越多,测试能力越高。所以我…...
力扣● 583. 两个字符串的删除操作 ● 72. 编辑距离 ● 编辑距离总结篇
● 583. 两个字符串的删除操作 注意审题: 给定两个单词 word1 和 word2 ,返回使得 word1 和 word2 相同所需的最小步数。 每步 可以删除任意一个字符串中的一个字符。 删除最少的字符使两者相同,说明留下来的就是最大公共子序列。不要求…...
Git速成
文章目录 Git 分布式版本控制工具课程内容1. 前言1.1 什么是Git1.2 使用Git能做什么 2. Git概述2.1 Git简介2.2 Git下载与安装 3. Git代码托管服务3.1 常用的Git代码托管服务3.2 码云代码托管服务3.2.1 注册码云账号3.2.2 登录码云3.2.3 创建远程仓库3.2.4 邀请其他用户成为仓库…...
一文看懂softmax loss
文章目录 softmax loss1.softmax函数2.交叉熵损失函数3.softmax loss损失函数(重点)4.带有temperature参数的softmax loss参考 softmax loss 1.softmax函数 softmax函数是一种常用的激活函数,通常用于多分类任务中。给定一个向量࿰…...
用C语言链表实现图书管理
#include <stdio.h> #include <stdlib.h> #include <string.h> struct ListNode {int val;//编号char title[50];//书名float price;//价格struct ListNode* next; };// 在尾部插入节点 struct ListNode* insertAtTail(struct ListNode* head, int val,char …...
Hello,Spider!入门第一个爬虫程序
在各大编程语言中,初学者要学会编写的第一个简单程序一般就是“Hello, World!”,即通过程序来在屏幕上输出一行“Hello, World!”这样的文字,在Python中,只需一行代码就可以做到。我们把这第一个爬虫就称之为“HelloSpider”&…...
AI实景无人自动直播间怎么搭建?三步教你轻松使用
最近很多朋友看到AI自动直播带货玩法,也想开启自己的自动直播间,但还是有些问题比较担心,这种自动讲解、自动回复做带货的直播间是不是很麻烦? 实景无人自动直播 实际上这种直播间搭建相当简单便捷!今天跟着笔者&…...
wechaty微信机器人,当机器人被@时做出响应
https://wechaty.js.org/zh/docs/api/message?_highlightmessage if (await msg.mentionSelf()) {console.log(this message were mentioned me! [You were mentioned] tip ([有人我]的提示))await room.say(不要微信机器人)} 我开发的人工智能学习网站: https://…...
8.6 Springboot项目实战 Spring Cache注解方式使用Redis
文章目录 前言一、配置Spring Cache1. @EnableCaching2. 配置CacheManager3. application.properties配置二、使用注解缓存数据1. 使用**@Cacheable** 改造查询代码2. 使用**@CacheEvict** 改造更新代码前言 在上文中我们使用Redis缓存热点数据时,使用的是手写代码的方式,这…...
rust引用本地crate
我们可以动态引用crate,build时从crate.io下载,但可能因无法下载导致build失败。首次正常引用三方crate,build时自动下载的crate源码,我们将其拷贝到固定目录中; build后可在RustRover中按住Ctrl键,在crat…...
分布式(计算机算法)
目录 分布式计算 分布式编辑 分布式和集群 分布式和集群的应用场景 分布式应用场景 集群应用场景 哪种技术更优、更快、更好呢 性能 稳定性 以下概念来源于百度百科 分布式计算 分布式计算是近年提出的一种新的计算方式。所谓分布式计算就是在两个或多个软件互相共享信息…...
CSS概念及入门
文章目录 1. CSS 概念及入门1.1. 简介1.2. 组成1.2.1. 选择器1.2.2. 属性 1.3. 区别 2. CSS 引入方式2.1. 行内样式2.1.1. 语法2.1.2. 特点 2.2. 内部样式2.2.1. 语法2.2.2. 特点 2.3. 外部样式2.3.1. 特点 2.4. 三种引入优先级 1. CSS 概念及入门 1.1. 简介 CSS 的全称为&am…...
用 C 语言模拟 Rust 的 Result 类型
在 Rust 中,Result<T, E> 类型是一个枚举,它表示一个操作可能成功并返回一个值 T,或者失败并返回一个错误 E。在 C 语言中,没有直接对应的 Result 类型,但我们可以使用结构体和枚举来模拟它。 下面是一个用 C 语…...
git基础命令(四)之分支命令
目录 基础概念git branch-r-a-v-vv-avv重命名分支删除分支git branch -h git checkout创建新的分支追踪远程分支同时切换到该分支创建新的分支并切换到该分支撤销对文件的修改,恢复到最近的提交状态:丢弃本地所有修改git checkout -h git merge合并指定分…...
redis瘦身版
线程模型 纯内存操作/非阻塞io多路复用/单线程避免多线程频繁上下文切换 基于Reactor模式开发了网络事件处理器:文件事件处理器,单线程的 io多路监听多个socket,据socket事件类型选择对应的处理器,高性能网络通信模型,…...
使用ChatGPT高效完成简历制作[中篇]-有爱AI实战教程(五)
演示站点: https://ai.uaai.cn 对话模块 官方论坛: www.jingyuai.com 京娱AI 导读:在使用 ChatGPT 时,当你给的指令越精确,它的回答会越到位,举例来说,假如你要请它帮忙写文案,如果没…...
论文阅读——SpectralGPT
SpectralGPT: Spectral Foundation Model SpectralGPT的通用RS基础模型,该模型专门用于使用新型3D生成预训练Transformer(GPT)处理光谱RS图像。 重建损失由两个部分组成:令牌到令牌和频谱到频谱 下游任务:...
Redis的过期键是如何处理的?过期键的删除策略有哪些?请解释Redis的内存淘汰策略是什么?有哪些可选的淘汰策略?
Redis的过期键是如何处理的?过期键的删除策略有哪些? Redis的过期键处理是一个重要的内存管理机制,它确保在键过期后能够释放相应的内存空间。Redis对过期键的处理主要依赖于其删除策略,这些策略包括被动删除(惰性删除…...
软件测试方法 -- 等价类边界值
测试用例的定义 测试用例是为了特定的目的而设计的一组测试输入、执行条件和预期的结果,以便测试是否满足某个特定需求。通过大量的测试用例来检验软件的运行效果,他是指导测试工作进行的依据。 下面我们介绍几种常用的黑盒测试方法 等价类划分法 定…...
浙江平板网站建设/在线网页生成器
转自:http://blog.csdn.net/DroidPhone/article/details/7445825 版权声明:本文为博主原创文章,未经博主允许不得转载。 目录(?)[-] 设备中断控制器和CPUIRQ编号在驱动程序中申请中断通用中断子系统Generic irq的软件抽象irq描述结构struct …...
网站顶部地图代码怎么做/中国百强城市榜单
参考文章 : 1.yarn资源memory与core计算配置 https://www.cnblogs.com/xjh713/p/9855238.html 2.cdh之调整YARN(调优yarn 生产必做优化项)004 https://blog.csdn.net/weixin_33788244/article/details/91669894 内存相关参数 我们在运行使…...
成都网站seo推广/葫岛百度seo
RPC 远程过程调用(英语:Remote Procedure Call,缩写为 RPC)是一个计算机通信协议。该协议允许运行于一台计算机的程序调用另一台计算机的子程序,而程序员无需额外地为这个交互作用编程。如果涉及的软件采用面向对象编程…...
浦东新区中国建设银行官网站/文军seo
今天对数据库做异机恢复,我们知道在恢复过程中是不对临时表空间进行恢复的,所以在进行resetlogs打开数据库之后,需要对临时表空间进行处理,处理方式如下: 1 添加新的临时表空间文件。 2 删除旧的临时表空间文件。 al…...
直播是网站怎么做/今天的重要新闻
getchar()的用法,部分内容参考百度百科 getchar()函数功能是从stdio中读字符 注:getchar有一个int型的返回值,当程序调用getcahr时,程序就等着用户按键,用户输入的字符被存放在键盘缓冲区中,直到用户按回…...
wordpress购物商城代码/佛山旺道seo
我发现很多牛人小时候都有两个重要的特点: 1. 喜欢读书,尤其是百科全书。 2. 专注,极度专注 1 1971年,马斯克出生在南非一个富裕的家庭,很小的时候就书不离手,下午两点放学后,他就跑去书店&…...