Python实践:基于Matplotlib实现某产品全年销量数据可视化
本文分享自华为云社区《画图实战-Python实现某产品全年销量数据多种样式可视化》,作者:虫无涯。
学习心得
-
有时候我们需要对某些数据进行分析,得到一些可视化效果图,而这些效果图可以直观展示给我们数据的变化趋势;
-
比如某产品的月销量数据、销售额的地区分布、销售增长和季节的变化情况、产品的贡献度分析等等;
-
本文主要针对某产品全年销量数据,绘制各种不同样式的图表,以不同样式展示数据;
-
学习本文建议对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
产品订单量-折线图
某产品全年订单量数据
-
以下是某产品全年的销量数据:
-
全年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 = indentx2= month y2 = returned
-
那对应的代码为:
import subprocess import sys subprocess.check_call([sys.executable, "-m", "pip", "install", "matplotlib"]) import matplotlib.pyplot as plt month = ["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")
-
运行上边代码后折线图的效果为:
产品订单&销售额-条形图
某产品全年订单&销售额数据
-
以下是某产品全年的销量数据:
-
图中的意思为对应的订单量的销售额和对应的退货量的价格。
绘制条形图
-
条形图中我们绘制双条形,一条是每月的退货量及对应价格,一条是每月的订单量和销售额;
-
针对我们提供的数据,可以把坐标定义为:
x1 = indent y1 = m1x2= 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 plt data = [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 plt data = [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 np data = 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 np x = 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库进行绘制各种图表,除了以上的几种图表,还有柱状图、网格图等等。学习的时候建议使用真实的数据,可以真正达到分析问题的效果。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
从0带你设计与实现基于STM32的智慧农业管理系统
本文分享自华为云社区《基于STM32的智慧农业管理系统设计与实现》,作者: DS小龙哥。 一、前言 1.1 项目介绍 【1】项目功能 随着全球农业现代化进程的加快,以及物联网、人工智能等先进技术的发展与应用,智慧农业已经成为现代农业发展的新趋势。基于精准感知、智能控制和远程管理的智慧农业系统能够显著提升农作物生产效率,降低资源消耗,实现环境友好型可持续农业生产。 在当前背景下,我国正大力推进数字乡村建设,智慧农业管理系统作为其中的重要组成部分,对于提高农业生产精细化管理水平,解决传统农业中信息获取不及时、人工管理成本高、决策缺乏科学依据等问题具有重要作用。 本设计开发一套基于STM32F103RCT6主控芯片的智慧农业管理系统,通过集成DHT11温湿度传感器、BH1750光照强度传感器以及土壤湿度检测传感器,实时监测农田环境和作物生长状态,并在超出阈值时通过蜂鸣器报警,提醒管理人员进行灌溉、施肥等操作。同时,采用NBIoT通信技术(BC26模块)将采集到的数据上传至云端,利用EMQX开源MQTT服务器框架部署于华为云ECS服务器上的MQTT服务器,实现数据的远程展示与处理。 系统支持微...
- 下一篇
详解GaussDB(DWS)中3个防过载检查项
本文分享自华为云社区《【防过载检查项】》,作者: 譡里个檔。 1. GUC参数检查 目的:针对不同版本建议设定不同的参数值,当前先检查出来,后续diagnosis会给出建议值 SELECT split_part((substring(version() from '\((.*)\)')), ' ', 2) AS version, (EXISTS (SELECT 1 FROM (SELECT count(DISTINCT node_name) AS dn_cnt FROM pgxc_node WHERE node_type = 'D' AND node_host <> 'localhost' GROUP BY node_host) WHERE dn_cnt <> 1) ) AS sdn_per_node, node_name, name AS guc_name, CASE WHEN unit = 'ms' THEN setting::bigint/1000 || ' s' WHEN unit = 's' THEN setting || ' s' ...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- SpringBoot2整合Redis,开启缓存,提高访问速度
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- MySQL8.0.19开启GTID主从同步CentOS8
- Mario游戏-低调大师作品
- Linux系统CentOS6、CentOS7手动修改IP地址
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- Docker安装Oracle12C,快速搭建Oracle学习环境
- CentOS7安装Docker,走上虚拟化容器引擎之路