Matplotlib
一. Matplotlib之HelloWorld
-
什么是Matplotlib
专门绘制2D图表的软件 -
为什么要学习Matplotlib
做数据可视化, Matplotlib是一个比较方便的工具 -
实现一个简单的Matplotlib画图
-
导入: import matplotlib.pyplot as plt
- 准备数据
- 创建画布
- 绘图
- 展示
-
Matplotlib三层结构
-
容器层
画板 -> 画布 -> 坐标系
-
辅助层
- 刻度, 坐标轴的标题, 标题, 网格, 图例
-
图像层
- 折线, 柱状图, 散点图, 饼状图, 直方图 …
-
二. 折线图(plot)与基础绘图功能
1. 折线图绘制与保存图片
- 绘图三步:
- 创建画布
- 绘图
- 展示
- 保存图片
- API: plt.savefig(path)
- 注意: 必须在show()前调用
- 原因: show()把画布清空了.
2. 完善原始折线图1(辅助显示层)
-
2.1 添加自定义x,y刻度
-
添加x轴刻度
- api: plt.xticks(x, 刻度文本列表)
-
添加y轴刻度
- api: plt.yticks(y, 刻度文本列表)
-
注意:
- 第一个参数必须是一个标量的列表
- 刻度文本列表必须和标量的列表一一对应
import random # 准备数据 x = range(60) y_gz = [random.randint(25,35) for i in x] # 创建画布 plt.figure(figsize=(20, 8), dpi=80) # 绘图 plt.plot(x, y_gz) # 添加刻度 # 准备刻度的数据 x_ticks = ['11点{}分'.format(i) for i in x] y_ticks = range(40) # 设置刻度 plt.xticks(x[::5], x_ticks[::5], fontsize=20) plt.yticks(y_ticks[::5], fontsize=20) # 展示 plt.show()
-
-
2.2 中文显示问题解决[了解]
1. 下载黑体 2. 拷贝字体文件
# ~/.virtualenvs/ai/local/lib/python3.5/site-packages/matplotlib/mpl-data/fonts/ttf # 字体文件 # 打印matplotlib配置文件的位置 import matplotlib print(matplotlib.matplotlib_fname())
-
编辑配置文件
#cd ~/.virtualenvs/ai/local/lib/python3.5/site-packages/matplotlib/mpl-data #vim matplotlibrc # 添加下面内容到配置文件中 font.family : sans-serif font.sans-serif : SimHei axes.unicode_minus : False
-
删除缓存文件
rm -r ~/.cache/matplotlib/*
-
重新运行 jupyter notebook
-
-
2.3 添加网格显示
- API: plt.grid(linestyle, alpha, color)
- 参数:
- linestyle; 线的样式, - 实线, --虚线
- alpha: 透明度
- color: 颜色 r,g,b
-
2.4 添加描述信息
- 添加x轴描述: plt.xlabel(‘名称’, fontsize)
- 添加y轴描述: plt.ylabel(‘名称’, fontsize)
- 添加标题: plt.title(‘标题’, fontsize)
3. 完善原始折线图2(图像层)
-
3.1 多次plot
- 如何绘制多折线图?
- 调用多次 plt.plot()
- plt.plot(x,y,linestyle,color,label)
- linestyle; 线的样式, - 实线, – 虚线
- color: r,g,b,y,c,m,k(黑色)
- label: 给线打标签(起名字)
- 如何绘制多折线图?
-
3.2 图例
- plt.legend(loc=‘best’, fontsize=20)
- 注意: 线要有label.
-
- 多个坐标系显示-plt.subplots(面向对象的画图方法)
- API: plt.subplots(nrows=1, ncols=1, figsize=(20, 10), dpi=80)
- 参数:
- nrows: 有几行坐标系
- ncols: 有几列坐标系
- figsize: 画布大小
- dpi: 清晰度
- 返回:
- 画布, 坐标系的元组(列表)
-
坐标系功能与plt相同, 有些方法不同
- set_xticks()
- set_yticks()
- set_xticklabels()
- set_title()
- set_xlabel()
- set_ylabel()
# 准备数据
x = range(60