画图实战-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

产品订单量-折线图

某产品全年订单量数据

  • 以下是某产品全年的销量数据:
某产品JanFebMarAprMayJunJulAugSepOctNovDec
订单量(indent)15334250115220866659433950
退货量(returned)61318235598423125221724
  • 全年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/530/750/970/1190/13110/15130/17150/19
退货量(returned/m2)20/340/560/780/910011120/13140/15160/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库进行绘制各种图表,除了以上的几种图表,还有柱状图、网格图等等。学习的时候建议使用真实的数据,可以真正达到分析问题的效果。

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

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

相关文章

TypeScript(六)条件类型,函数,装饰器

条件类型 TypeScript 中的条件类型是一种高级类型,它使我们根据不同的条件创建更复杂的类型。 TS中的条件类型就是在类型中添加条件分支,以支持更加灵活的泛型 条件类型允许我们根据某个类型的属性是否满足某个条件,来确定最终的类型。 type…

【智能算法】蜻蜓算法(DA)原理及实现

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.代码实现4.参考文献 1.背景 2016年,Mirjalili受到蜻蜓静态和动态集群行为启发,提出了蜻蜓算法(Dragonfly algorithm, DA)。 2.算法原理 2.1算法思想 蜻蜓集群有两种行为目的:狩猎&#xf…

高端新颖知识竞赛活动方案

设计一场高端新颖知识竞赛活动,需要组织者用心策划,精心准备。下面这场竞赛设计新颖,可供大家组织竞赛活动时参考 。本竞赛分为“万箭齐发”、“城旗易主”、“群雄逐鹿”、“追风逐电”,四个环节,所有环节必须在主持人…

【CesiumJS-5】绘制动态路线实现飞行航线、汽车轨迹、路径漫游等

实现效果 前言 Cesium中,动态路线绘制的核心是借助CZML格式,CZML是一种用来描述动态场景的JSON数组,可以用来描述点、线、多边形、体、模型及其他图元,同时定义它们是怎样随时间变化的; CZML主要做三件事: 1.添加模型信息 2.添加…

如何在Linux系统部署APITable容器并实现无公网IP远程管理本地数据

文章目录 前言1. 部署APITable2. cpolar的安装和注册3. 配置APITable公网访问地址4. 固定APITable公网地址 前言 vika维格表作为新一代数据生产力平台,是一款面向 API 的智能多维表格。它将复杂的可视化数据库、电子表格、实时在线协同、低代码开发技术四合为一&am…

C#,蛇梯问题(Snake and Ladder Problem)的算法与源代码

1 蛇梯问题 Snake and Ladder Problem 给定一个蛇梯板,找出从源单元格或第一个单元格到达目标单元格或最后一个单元格所需的最小掷骰次数。基本上,玩家可以完全控制掷骰子的结果,并希望找出到达最后一个单元格所需的最小掷骰次数。 如果玩家到达的牢房是梯子的底部,玩家…

金融防线升级:构筑数据安全的不可逾越之墙

近日,中国人民银行专栏《金融科技支持高质量发展》指出,应不断增强金融行业的网络安全和数据安全保障能力,坚持总体国家安全观,持续完善金融网络安全、数据安全制度体系,依法开展金融业关键信息基础设施安全保护工作&a…

mac删除带锁标识的app

一 、我们这里要删除FortiClient.app 带锁 常规方式删除不掉带锁的 app【如下图】 二、删除命令,依次执行即可。 /bin/ls -dleO /Applications/FortiClient.app sudo /usr/bin/chflags -R noschg /Applications/FortiClient.app /bin/ls -dleO /Applications/Forti…

Wireshark4.2.3 x64 Setup20240313

参考:【抓包工具】win 10 / win 11:WireShark 下载、安装、使用(https://blog.csdn.net/qq_39720249/article/details/128157223) 文章目录 下载安装12 license 许可证3 donations:捐款4 Choose Components&#xff1…

算法-图的存储,图的转置,拓扑排序

1.图的存储 图用来对关系建模.图是节点和边构成的集合.节点反映图的元素集合,边反映图的元素集合中元素间的关系. 上述是由五个节点,三条边构成的结构.我们可以用图对其建模. 对由节点&#x…

【Python】Leetcode 240. 搜索二维矩阵 II - 削减矩阵+递归,击败88%

描述 搜索二维矩阵 II 编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。 该矩阵具有以下特性: 每行的元素从左到右升序排列。 每列的元素从上到下升序排列。 思路 确定左右及上下限,削减矩阵,递归。 注意判断四个端…

API数据能力开放架构 数据api接口

一.API数据接口可以从几个不同的角度来看待: 1. 技术角度:API数据接口是一种技术实现,通常是以HTTP协议或其他网络协议为基础,并采用特定的数据格式(如JSON或XML)来传递数据。 2. 业务角度:API…

前端input上传文件 使用new FormData()同时上传文件类型和JSON数据

失败案例 async uploadFileHandler(e) {if (e.target.files.length) {const files e.target.files[0];let formData new FormData();formData.append("file", files);formData.append("module", "knowledge");fileupload(formData).then(res …

JVM探究

JVM探究 请你谈谈你对JVM的理解?java -> class -> jvm java 8虚拟机和之前的变化更新OOM 内存溢出。栈溢出 StackOverFlowError > 怎么分析JVM的常用调优参数 ? 扩大内存内存快照如何抓取,怎么分析Dump文件?知道吗&…

SAP 生产订单中计划成本问题简介

最近财务在月结的时候,发现有生产订单结算的时候有物料不存在计划成本,并且财务顾问反馈这个问题已经存在有一段时间了。通过对生产订单的成本分析按钮查看生产订单的成本 发现确实存在有物料不存在计划成本,但是生产订单存在实际成本。 1、首先想到的是无计划成本的原材料…

C语言易错知识点:scanf函数

scanf在C语言学习中比较常用,但因为其涉及屏幕缓冲区导致有的时候会调入陷阱,下面分享一下常见的需要注意的事项: 1.输入末尾带有回车\n 当我们输入数据后,最后按下回车时,屏幕缓冲区的末尾都会含有这个字符 scanf的…

leetcode110.平衡二叉树

之前没有通过的样例 return语句只写了一个 return abs(l-r)<1缺少了 isBalanced(root->left)&&isBalanced(root->right);补上就好了 class Solution { public:bool isBalanced(TreeNode* root) {if(!root){return true;}int lgetHeight(root->left);i…

(学习日记)2024.03.11:UCOSIII第十三节:使用优先级的流程 (持续更新)

写在前面&#xff1a; 由于时间的不足与学习的碎片化&#xff0c;写博客变得有些奢侈。 但是对于记录学习&#xff08;忘了以后能快速复习&#xff09;的渴望一天天变得强烈。 既然如此 不如以天为单位&#xff0c;以时间为顺序&#xff0c;仅仅将博客当做一个知识学习的目录&a…

vulntarget-k - 内网渗透

标签 xxl-job rce Spring-Cloud-CVE-2022-22947 nacos auth bypass iox 靶机难度比较简单&#xff0c;都是用用 exp 就好了 拓扑图 网卡设置 首先需要使用虚拟网络编辑器&#xff0c;增加 VMnet1、VMnet2、VMnet3 对三张网卡设置子网 IP VMnet1 192.168.100.0 VMnet2 1…

EM算法详解

EM(Expectation-Maximum)算法也称期望最大化算法,曾入选“数据挖掘十大算法”中,可见EM算法在机器学习、数据挖掘中的影响力。EM算法是最常见的隐变量估计方法,在机器学习中有极为广泛的用途,例如常被用来学习高斯混合模型(Gaussian mixture model,简称GMM)的参数;隐…