首先,了解一下什么是matplotlib?
matplotlib: 最流行的Python底层绘图库,主要做数据可视化图表,名字取材于MATLAB,模仿MATLAB构建
目录
- 折线图:
- 以折线的上升或下降来表示统计数量的增减变化的统计图
- 特点:能够显示数据的变化趋势,反映事物的变化情况。(变化)
- 直方图:
- 由一系列高度不等的纵向条纹或线段表示数据分布的情况。
- 一般用横轴表示数据范围,纵轴表示分布情况。
- 特点:绘制连续性的数据,展示一组或者多组数据的分布状况(统计)
- 条形图:
- 排列在工作表的列或行中的数据可以绘制到条形图中。
- 特点:绘制连离散的数据,能够一眼看出各个数据的大小,比较数据之间的差别。(统计)
- 散点图:
- 用两组数据构成多个坐标点,考察坐标点的分布,判断两变量之间是否存在某种关联或总结坐标点的分布模式。
- 特点:判断变量之间是否存在数量关联趋势,展示离群点(分布规律)
折线图
- 呈现公司产品(不同区域)每天活跃用户数
- 呈现app每天下载数量
- 呈现产品新功能上线后,用户点击次数随时间的变化
- 呈现员工每天上下班时间
例1:气温岁时间变化折线图
如果列表a表示10点到12点的每一分钟的气温,如何绘制折线图观察每分钟气温的变化情况?
a= [random.randint(20,35) for i in range(120)]
from matplotlib import pyplot as plt
import random
# matplotlib显示中文配置方法:https://www.cnblogs.com/hhh5460/p/4323985.html
x =range(0,120)
y =[random.randint(20,35) for i in range(120)]
# 设置图形大小,并设置像素
plt.figure(figsize=(100,8), dpi=80)
# 绘制折线图
plt.plot(x,y)
# 调整x轴的刻度
_x = list(x) # 此处强制类型转换,因为只有列表才能取步长。
_xticks_lables = ["10点{}分".format(i) for i in range(60)]
_xticks_lables += ["11点{}分".format(i) for i in range(60)]
# 取步长x轴刻度数量要对应,数据和字符串进行对应,数据长度要一样120/3 == (60+60)/2
# 但是坐标显示比较密集,可以将x轴标签顺时针旋转45度
# 但是matplotlib不支持显示中文字体,使用fontproperties="SimHei"方便灵活,Ctrl+B查看源码进行设置
plt.xticks(_x[::3], _xticks_lables[::3], rotation=45, fontproperties="SimHei")
# 描述坐标轴信息,设置字体信息
plt.xlabel("时间",fontproperties="SimHei")
plt.ylabel("温度",fontproperties="SimHei")
plt.title("10点--12点每分钟气温变换的情况",fontproperties="SimHei")
plt.show()
# 保存图片至本地
plt.savefig("./pict.png")
例2:多个折线图---走势问题
假设大家在30岁的时候,根据自己的实际情况,统计出来了从11岁到30岁每年交的女(男)朋友的数量如列表a,请绘制出该数据的折线图,以便分析自己每年交女(男)朋友的数量走势 a = [1,0,1,1,2,4,3,2,3,4,4,5,6,5,4,3,3,1,1,1] 要求: y轴表示个数 x轴表示岁数,比如11岁,12岁等
from matplotlib import pyplot as plt
my_font = {
'family': 'SimHei',
'weight':'bold',
'size':'16'
}
x = range(11, 31)
y_1 = [1,0,1,1,2,4,3,2,3,4,4,5,6,5,4,3,3,1,1,1]
y_2 = [1,0,3,1,2,2,3,3,2,1,2,1,1,1,1,1,1,1,1,1]
plt.xlabel("年龄",fontproperties='SimHei')
plt.ylabel("女朋友数量",rotation = 90,fontproperties='SimHei')
plt.title("11-30岁每年交往的女朋友数量",fontproperties='SimHei')
_x