简介
个人简介
- 姓名:张大鹏
- 性别:男
- 生日:1993年8月29日
- 经验:工作经验8年,IT技术培训经验3年
- 爱好:学习
- 座右铭:不积跬步无以至千里,不积小流无以成江海。
- 优点:自律,稳重,热爱学习
- 缺点:胖胖的
课程简介
- 教大家怎么简单的使用python做数据分析并可视化
matplotlib简介
- python数据分析必学的基础库
- 能够轻松的绘制折线图,柱状图,散点图,饼图等常见可视化图表
- 使用简单,numpy,pandas,matplotlib是python数据分析中最常见的工具组合
- 一般用于将python数据进行可视化
- 安装:
pip install matplotlib
教学目标
- 了解matplotlib是什么(基础)
- 了解matplotlib的使用场景(基础)
- 了解图表的常见组成(入门)
- 了解matplotlib如何制作图表并展示(入门)
- 了解怎么使用matplotlib展示各种辅助信息并解决中文乱码问题(入门)
- 了解使用matplotlib最重要的步骤(重要)
- 了解使用matplotlib的一般完整步骤(重要)
- 了解怎么在一张图表中绘制多个图形(进阶)
环境准备
安装虚拟环境管理依赖
pip install virtualenv
# 备用
pip install virtualenv -i http://pypi.douban.com/simple/
pip install virtualenv -i https://pypi.tuna.tsinghua.edu.cn/simple
创建虚拟环境:这里叫ai,是人工智能的意思,里面包含了一些常用的人工智能基础库,mataplotlib是基础库之一
virtualenv ai
激活虚拟环境
.\ai\Scripts\activate
安装matplotlib
pip install matplotlib
创建工作空间(文件夹)
mkdir matplotlib
使用vscode打开文件夹,即可开始编写代码
图表的常见组成部分
- 标题
- x轴标签
- y轴标签
- x轴刻度
- y轴刻度
- 图例
- 网格
绘制图表最重要的步骤
最重要的步骤
- 导入依赖
- 准备数据(后期一般是通过数据分析技术处理后的数据)
- 创建画布
- 绘图
- 展示
示例:北京气温折线图
# 导入依赖
import matplotlib.pyplot as plt
from random import randint
# 准备数据(后期一般是通过数据分析技术处理后的数据)
# 这里模拟北京11点到12点一小时内的气温,假设是随机从15-18摄氏度变化
y = [randint(15,18) for _ in range(60)]
x = range(60)
# 创建画布
# figsize 控制画布的大小
# dpi 控制画布的像素,也能够有控制画布大小的效果
plt.figure(figsize=(10, 6), dpi=100)
# 绘图
plt.plot(x, y)
# 展示
plt.show()
代码分析
import matplotlib.pyplot as plt
from random import randint
- 导入依赖
- plt是matplotlib用来绘制图像的一个对象
- randint是用来生成随机数的一个对象
y = [randint(15,18) for _ in range(60)]
x = range(60)
- 生成数据
- y是60个15-18之间的随机数,这里采用列表生成式快速生成
- x是从0-59的整数
plt.figure(figsize=(10, 6), dpi=100)
- 创建画布
figsize=(10, 6)
:指定figure的宽和高,单位为英寸dpi=100
:指定绘图对象的分辨率,即每英寸多少个像素,缺省值为80
plt.plot(x, y)
- 绘制折线图
- 这里分别传入x轴的标签数据和y轴的数值数据
plt.show()
- 展示绘制的折线图
课堂实验:
- 调整figsize的大小,分别为
- (10,6)
- (20,8)
- (40,16)
- (80,32)
- 调整dpi的大小,分别为
- 10
- 20
- 40
- 80
- 100
- 200
绘制图表的一般完整步骤
- 导入依赖
- 准备数据
- 解决中文乱码问题
- 绘制画布
- 绘制图像
- 绘制标题
- 绘制xy轴标签
- 绘制xy轴刻度
- 绘制网格
- 绘制图例
- 保存图片
- 显示图片
示例:北京上海气温折线对比图
# 导入依赖
import matplotlib.pyplot as plt
from random import randint
# 准备数据
x = range(60) # 一个小时内的气温
y_beijing = [randint(15, 18) for _ in x] # 北京气温
y_shanghai = [randint(1, 3) for _ in x] # 上海气温
x_ticks = ['11点%02d分'%(i) for i in x] # x轴刻度
y_ticks = range(20) # y轴刻度
# 解决中文乱码问题
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']
plt.rcParams['axes.unicode_minus'] = False
# 绘制画布
plt.figure(figsize=(10, 6), dpi=100)
# 绘制图像
plt.plot(x, y_beijing, label='北京气温')
plt.plot(x, y_shanghai, label='上海气温')
# 绘制标题
plt.title('北京上海气温折线对比图')
# 绘制xy轴标签
plt.xlabel("时间")
plt.ylabel("气温")
# 绘制xy轴刻度
plt.xticks(x[::10], x_ticks[::10])
plt.yticks(y_ticks)
# 绘制网格
plt.grid()
# 绘制图例
plt.legend()
# 保存图片
plt.savefig('./test.png')
# 显示图片
plt.show()
代码分析
x = range(60) # 一个小时内的气温
y_beijing = [randint(15, 18) for _ in x] # 北京气温
y_shanghai = [randint(1, 3) for _ in x] # 上海气温
x_ticks = ['11点%02d分'%(i) for i in x] # x轴刻度
y_ticks = range(20) # y轴刻度
- 准备数据
- x是从0-59的数字,表示一个小时内的分钟数
- y_beijing表示一个小时内北京气温的随机值,是60个15-18的随机数
- y_shanghai表示一个小时内上海气温的随机值,是60个1-3的随机数
- x_ticks表示x轴的标签,是时间字符串数组
- y_ticks表示y轴的标签,是0-19的整数序列
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']
plt.rcParams['axes.unicode_minus'] = False
- 解决中文乱码问题
- windows上的固定写法,一般添加这两行都能解决乱码问题
Microsoft YaHei
:表示微软雅黑字体,也可以替换为系统中的其他存在字体,一般不建议修改
plt.plot(x, y_beijing, label='北京气温')
plt.plot(x, y_shanghai, label='上海气温')
- 绘制图像
- 这里绘制了两条折线,分别表示北京的气温变化和上海的气温变化
- 同时使用label添加了标签,后面的显示图例依赖于这里的设置
# 绘制标题
plt.title('北京上海气温折线对比图')
# 绘制xy轴标签
plt.xlabel("时间")
plt.ylabel("气温")
# 绘制xy轴刻度
plt.xticks(x[::10], x_ticks[::10])
plt.yticks(y_ticks)
# 绘制网格
plt.grid()
# 绘制图例
plt.legend()
- 绘制标题,标签,刻度,网格,图例
plt.savefig('./test.png')
- 保存图片
- 查看代码所在文件夹,发现会多了一个test.png的图片
谢谢
- 本次课程到此结束,感谢大家的聆听
- 我的电话+微信:18010070052,大家对本次课程有什么问题,建议,想法可以随时联系我,单纯觉得我人不错,想要交个朋友,也是可以滴
- 再次感谢,相遇是缘,感谢大家给我这次授课的机会,祝大家学习愉快,学业顺利,写代码永无bug