学习心得
- 有时分咱们需要对某些数据进行剖析,得到一些可视化作用图,而这些作用图能够直观展现给咱们数据的改变趋势;
- 比如某产品的月销量数据、出售额的地区散布、出售增长和季节的改变状况、产品的贡献度剖析等等;
- 本文首要针对某产品全年销量数据,制作各种不同款式的图表,以不同款式展现数据;
- 学习本文主张对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库进行制作各种图表,除了以上的几种图表,还有柱状图、网格图等等。学习的时分主张运用实在的数据,能够真实达到剖析问题的作用。