画图实战-Python实现某产品全年销量数据多种样式可视化

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

产品订单量-折线图

某产品全年订单量数据

  • 以下是某产品全年的销量数据:
某产品 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 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")
  • 运行上边代码后折线图的效果为:

请在此添加图片描述

产品订单&销售额-条形图

某产品全年订单&销售额数据

  • 以下是某产品全年的销量数据:
订单量(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 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库进行绘制各种图表,除了以上的几种图表,还有柱状图、网格图等等。学习的时候建议使用真实的数据,可以真正达到分析问题的效果。

目录
相关文章
|
8天前
|
数据采集 JSON 数据处理
抓取和分析JSON数据:使用Python构建数据处理管道
在大数据时代,电商网站如亚马逊、京东等成为数据采集的重要来源。本文介绍如何使用Python结合代理IP、多线程等技术,高效、隐秘地抓取并处理电商网站的JSON数据。通过爬虫代理服务,模拟真实用户行为,提升抓取效率和稳定性。示例代码展示了如何抓取亚马逊商品信息并进行解析。
抓取和分析JSON数据:使用Python构建数据处理管道
|
6天前
|
数据可视化 算法 JavaScript
基于图论的时间序列数据平稳性与连通性分析:利用图形、数学和 Python 揭示时间序列数据中的隐藏模式
本文探讨了如何利用图论分析时间序列数据的平稳性和连通性。通过将时间序列数据转换为图结构,计算片段间的相似性,并构建连通图,可以揭示数据中的隐藏模式。文章介绍了平稳性的概念,提出了基于图的平稳性度量,并展示了图分区在可视化平稳性中的应用。此外,还模拟了不同平稳性和非平稳性程度的信号,分析了图度量的变化,为时间序列数据分析提供了新视角。
21 0
基于图论的时间序列数据平稳性与连通性分析:利用图形、数学和 Python 揭示时间序列数据中的隐藏模式
|
15天前
|
自然语言处理 算法 数据挖掘
探讨如何利用Python中的NLP工具,从被动收集到主动分析文本数据的过程
【10月更文挑战第11天】本文介绍了自然语言处理(NLP)在文本分析中的应用,从被动收集到主动分析的过程。通过Python代码示例,详细展示了文本预处理、特征提取、情感分析和主题建模等关键技术,帮助读者理解如何有效利用NLP工具进行文本数据分析。
36 2
|
16天前
|
JSON 安全 数据安全/隐私保护
深度剖析:Python如何运用OAuth与JWT,为数据加上双保险🔐
【10月更文挑战第10天】本文介绍了OAuth 2.0和JSON Web Tokens (JWT) 两种现代Web应用中最流行的认证机制。通过使用Flask-OAuthlib和PyJWT库,详细展示了如何在Python环境中实现这两种认证方式,从而提升系统的安全性和开发效率。OAuth 2.0适用于授权过程,JWT则简化了认证流程,确保每次请求的安全性。结合两者,可以构建出既安全又高效的认证体系。
33 1
|
14天前
|
数据采集 数据可视化 数据挖掘
使用Python进行数据处理与可视化——以气温数据分析为例
【10月更文挑战第12天】使用Python进行数据处理与可视化——以气温数据分析为例
115 0
|
7天前
|
安全 数据处理 开发者
Python中的多线程编程:从入门到精通
本文将深入探讨Python中的多线程编程,包括其基本原理、应用场景、实现方法以及常见问题和解决方案。通过本文的学习,读者将对Python多线程编程有一个全面的认识,能够在实际项目中灵活运用。
|
1天前
|
设计模式 开发者 Python
Python编程中的设计模式:工厂方法模式###
本文深入浅出地探讨了Python编程中的一种重要设计模式——工厂方法模式。通过具体案例和代码示例,我们将了解工厂方法模式的定义、应用场景、实现步骤以及其优势与潜在缺点。无论你是Python新手还是有经验的开发者,都能从本文中获得关于如何在实际项目中有效应用工厂方法模式的启发。 ###
|
6天前
|
弹性计算 安全 小程序
编程之美:Python让你领略浪漫星空下的流星雨奇观
这段代码使用 Python 的 `turtle` 库实现了一个流星雨动画。程序通过创建 `Meteor` 类来生成具有随机属性的流星,包括大小、颜色、位置和速度。在无限循环中,流星不断移动并重新绘制,营造出流星雨的效果。环境需求为 Python 3.11.4 和 PyCharm 2023.2.5。
26 9