本文分享自华为云社区《画图实战-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库进行绘制各种图表,除了以上的几种图表,还有柱状图、网格图等等。学习的时候建议使用真实的数据,可以真正达到分析问题的效果。

点击关注,第一时间了解华为云新鲜技术~

Python实践:基于Matplotlib实现某产品全年销量数据可视化的更多相关文章

  1. python实现的、带GUI界面电影票房数据可视化程序

    代码地址如下:http://www.demodashi.com/demo/14588.html 详细说明: Tushare是一个免费.开源的python财经数据接口包.主要实现对股票等金融数据从数据采 ...

  2. 【新人赛】阿里云恶意程序检测 -- 实践记录10.27 - TF-IDF模型调参 / 数据可视化

    TF-IDF模型调参 1. 调TfidfVectorizer的参数 ngram_range, min_df, max_df: 上一篇博客调了ngram_range这个参数,得出了ngram_range ...

  3. 基于高德开放平台Map Lab的数据可视化

    在Map Lab上创建可视化项目,首先需要添加数据.添加数据有4种方式,分别是: 上传CSV文件添加数据 上传Excel文件添加数据 连接在线数据库添加数据 提供在线数据API添加数据 一.数据上传说 ...

  4. Python Seaborn综合指南,成为数据可视化专家

    概述 Seaborn是Python流行的数据可视化库 Seaborn结合了美学和技术,这是数据科学项目中的两个关键要素 了解其Seaborn作原理以及使用它生成的不同的图表 介绍 一个精心设计的可视化 ...

  5. 数据可视化案例 | 如何打造数据中心APP产品

    意识到数据探索带来的无尽信息,越来越多的企业开始建立自有的数据分析平台,打造数据化产品,实现数据可视化. 在零售商超行业,沃尔玛"啤酒与尿布"的故事已不再是传奇.无论是大数据还是小 ...

  6. [python] 基于matplotlib实现圆环图的绘制

    圆环图本质上是一个中间切出一块区域的饼状图.可以使用python和matplotlib库来实现.本文主要介绍基于matplotlib实现圆环图.本文所有代码见:Python-Study-Notes # ...

  7. 机器学习算法与Python实践之(四)支持向量机(SVM)实现

    机器学习算法与Python实践之(四)支持向量机(SVM)实现 机器学习算法与Python实践之(四)支持向量机(SVM)实现 zouxy09@qq.com http://blog.csdn.net/ ...

  8. Python实践之(七)逻辑回归(Logistic Regression)

    机器学习算法与Python实践之(七)逻辑回归(Logistic Regression) zouxy09@qq.com http://blog.csdn.net/zouxy09 机器学习算法与Pyth ...

  9. MapReduce 原理与 Python 实践

    MapReduce 原理与 Python 实践 1. MapReduce 原理 以下是个人在MongoDB和Redis实际应用中总结的Map-Reduce的理解 Hadoop 的 MapReduce ...

  10. 机器学习算法与Python实践之(五)k均值聚类(k-means)

    机器学习算法与Python实践这个系列主要是参考<机器学习实战>这本书.因为自己想学习Python,然后也想对一些机器学习算法加深下了解,所以就想通过Python来实现几个比较常用的机器学 ...

随机推荐

  1. Linux-计算毫秒数

    date +%s返回自划时代以来的秒数. date +%s%N返回秒数+当前纳秒数. 因此,echo $(($(date +%s%N)/1000000))是你需要的毫秒数 date +"%T ...

  2. Linux Shell 字符串截取方法

    Linux 的字符串截取很有用.有八种方法. 假设有变量 var=http://www.aaa.com/123.htm. 1. # 号截取,删除左边字符,保留右边字符. 代码如下: echo ${va ...

  3. 最好的PDF文本编辑开发库

    PDF文件是一种常见的文档格式,它具有跨平台.保持原样.安全性高等特点.但是,PDF文件也有一个缺点,就是不可编辑.如果我们想要修改PDF文件中的内容,比如文字.图片.表格等,就会很麻烦,需要转档为W ...

  4. Buffer Queue原理

    BufferQueue详解 原理一.BufferQueue 简介在工作中,我们经常会和Surface,ImageReader,ImageWriter BufferQueue打交道,它们之间是什么关系呢 ...

  5. Idea 本人开发常用几款插件

    先说 idea装插件 首先,进入插件安装界面: 标注 1:显示 IntelliJ IDEA 的插件分类, All plugins:显示 IntelliJ IDEA 支持的所有插件: Enabled:显 ...

  6. Maven如何打包可执行jar包

    假设我有一个maven项目叫:hello-world 新建一个HelloWorld类: package com.dylan.mvnbook.helloworld; public class Hello ...

  7. org.apache.http.client.ClientProtocolException: URI does not specify a valid host name:localhost:xxx

    今天部署应用的时候遇到的,总结一下我知道的有2个原因: 1.地址前要加http://  这就是标题报错的原因,他用的是localhost:xxx 2.地址本身拼错了也会报这个,例如地址:http:// ...

  8. golang中的接口(数据类型)

    golang中的接口 Golang 中的接口是一种抽象数据类型,Golang 中接口定义了对象的行为规范,只定义规范 不实现.接口中定义的规范由具体的对象来实现,通俗的讲接口就一个标准,它是对一个对象 ...

  9. java数组实现的超市管理系统(控制台)

    说明:使用数组存储数据,针对用户功能1:增加用户2:删除用户3:修改用户:针对商品功能:1.显示所有商品2.修改商品信息3.添加商品信息4.删除商品信息5.查询商品信息 效果展示 ========== ...

  10. 云原生:使用HPA和VPA实现集群扩缩容

    1 背景 我们之前介绍过,随着业务流量上涨之后,我们的系统需要适时的进行扩容. 数据存储层我们也介绍过MySQL的扩容 Scale UP(纵向扩展) 和 Scale Out(横向扩展) 垂直拆分(Sc ...