关于matplotlib的使用
例子程序:
# 1.导入模块
import matplotlib.pyplot as plt
# 2.准备数据
# 查看一个人最近5年的收入情况
x = [1,2,3,4,5,]
y = [60000,75000,100000,120000,150000]
# 3.创建画布
plt.figure(figsize=(12,5),dpi=100)
# 4.绘图
plt.plot(x,y)
# 6.保存
plt.savefig('年收入.png')
# 5.展示
plt.show()
创建画布时可指定画布大小和画布的像素
# plt.figure(figsize=(), dpi=)
# figsize:指定图的长宽
# dpi:图像的清晰度
# 返回fig对象
保存图片时要注意:show方法执行后会展示画布的同时清空画布,所以show方法后再保存会存到一张空白图片,所以为了保存成功,保存方法调用需要放在show方法之前
plt.savefig(path)
# 1.创建画布,并设置画布属性
plt.figure(figsize=(20, 8), dpi=80)
# 2.保存图片到指定路径
plt.savefig("test.png")
如在jupyter notebook内运行时出现图像显示不出来,并出现以下字段
加一行代码
%matplotlib inline
即可解决。
设置刻度
plt.xticks(x, **kwargs)
x:要显示的刻度值,标量值列表
第二个参数:刻度标签列表,即刻度的名字
plt.yticks(y, **kwargs)
y:要显示的刻度值,标量值列表
第二个参数:刻度标签列表,即刻度的名字
- 绘图步骤
- 导包: import matplotlib.pylot as plt
- 准备数据
- 创建画布; plt.figure(figsize=(20, 8), dpi=100)
- 绘图(折线图) plt.plot(x, y)
- 展示: plt.show()
- Matplotlib三层结构[**]
- 容器层
- Canvas: 画板
- Figure: 画布
- 坐标系: Axes
- 坐标轴(Axis)
- 辅助层
- 刻度, 坐标标题, 网格, 图例, 图像标题
- 图像层
- 折线图, 散点图, 柱状图, 直方图, 饼状图
- 容器层
3.2 折线图(plot)与基础绘图功能[]
-
折线图绘制与保存图片
-
绘图三步:
- 创建画布
- 绘制图像
- 展示
-
保存图片
API: plt.savefig(path)
注意: 保存图片必须在show方法之前
原因: show()清空画布. -
完善原始折线图1(辅助显示层) [***]
2.2 添加自定义x,y刻度
- 添加x轴刻度
- api: plt.xticks(x_ticks, x_ticks_labels)
- 添加y轴刻度
- api: plt.yticks(y_ticks, y_ticks_labels)
- 注意:
- x轴刻度和y轴刻度没有关系
- 第一参数必须是一个标量值(数值), 第二参数是显示的文本, 必须和第一个参数是一一对应
2.3 中文显示问题解决[了解]
- 下载黑体
- 拷贝字体文件
~/.virtualenvs/ai/local/lib/python3.5/site-packages/matplotlib/mpl-data/fonts/ttf
字体文件
打印matplotlib配置文件的位置
import matplotlib
print(matplotlib.matplotlib_fname())
3. 编辑配置文件
```python
#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 ~/.matplotlib/*
或
rm -r ~/.cache/matplotlib/* - 重新运行 jupyter notebook
2.4 添加网格显示
- API:
- plt.grid(True, linestyle=’–’, alpha, color)
- 参数:
- linestyle: 线的样式, – 虚线图, - 实线
- alpha: 透明度
- color: 颜色
2.5 添加描述信息
- 添加x轴描述: plt.xlabel()
- 添加y轴描述: plt.ylabel()
- 添加标题: plt.title()
2.6 完善原始折线图2(图像层)
- 如何绘制多条折线图
- 多次调用plot方法.
- 图例
- API: plt.legend(loc=‘best’)
- 注意: 要求必须使用label标记图形.
2.7 多个坐标系显示-plt.subplots(面向对象的画图方法)
- API: plt.subplots(nrows, ncols, figsize, dpi)
- 参数:
- nrows: 行数
- ncols: 列数
- figsize: 画布大小
- dpi: 清晰度
- 返回:
- 画布, 坐标系列表
- 坐标系功能与plt相同, 有些方法不同
- set_xticks()
- set_yticks()
- set_xticklabels()
- set_xlabel()
- set_ylabel()
- set_title()
2.8 折线图的应用场景
- 描述数据的变化情况
- 绘制函数图形
3.3 常见图像绘制[*]
- API与含义:
- 折线图: 用于展示数据的变化情况
- API: plt.plot(x, y)
- 散点图: 用于 观察两个变量间的关联, 显示离散点分布规律(情况)
- API: plt.scatter(x, y)
- 柱状图: 统计/对比
- API: plt.bar(x, height, width, color)
- 折线图: 用于展示数据的变化情况
- Parameters:
x : x轴的标量序列
height: 标量或标量序列, 柱状图的高度
width : 柱状图的宽度, 默认值0.8
align : 柱状图在x维度上的对齐方式, {‘center’, ‘edge’}, 可选, 默认: ‘center’
**kwargs :
color:选择柱状图的颜色
- 直方图: 展示连续数据的分布情况
- API: plit.hist(x, bins)
- Parameters:
x : 数组或数组的序列, 表示要展示的数据
bins : 整数,序列 可选
如果是整数就是柱状体的个数
如果序列就是每个柱状体的边缘值, 左开右闭.
- 饼状图: 占比情况
- API: plt.pie(x, labels, autopct, colors)
x:数量,自动算百分比
labels:每部分名称
autopct:占比显示指定%1.2f%%
colors:每部分颜色