matplotlib库简介
- 专门用于开发2D图表(包括3D图表)
- 以渐进、交互式方式实现数据可视化
实现一个简单的matplotlib画图(以折线图为例)
示例:
import random
import matplotlib.pyplot as plt
x = range(60)
y = [random.uniform(15, 18) for i in x]
plt.figure(figsize=(20, 8), dpi=100)
plt.plot(x, y)
plt.show()
绘图辅助功能完善
import random
import matplotlib.pyplot as plt
# 设置显示中文字体
from pylab import mpl
mpl.rcParams["font.sans-serif"] = ['SimHei']
# 避免由于字体更改导致部分字符无法正常显示
mpl.rcParams['axes.unicode_minus'] = False
x = range(60)
y = [random.uniform(15, 18) for i in x]
plt.figure(figsize=(20, 8), dpi=100)
plt.plot(x, y)
# 设置x,y轴刻度
x_ticks_label = ['11点{}分'.format(i) for i in x]
y_ticks = range(40)
# 修改x,y轴坐标刻度显示
plt.xticks(x[::5], x_ticks_label[::5])
plt.yticks(y_ticks[::5])
# 添加网格显示,最后一个参数为颜色深度
plt.grid(True, linestyle='--', alpha=1)
# 添加x轴y轴描述信息及标题
plt.xlabel('时间')
plt.ylabel('温度')
plt.title('温度变化示意图', fontsize=20)
# 保存图片(注意要在show()之前保存,否则show()会释放掉figure资源)
plt.savefig('test.png')
plt.show()
一个坐标系下绘制多个图像
只需要增加多个plot函数即可增加多个图像,plot函数可以设置图例以及函数曲线的风格:
x = range(60)
y_shanghai = [random.uniform(15, 18) for i in x]
# 新增温度数据
y_beijing = [random.uniform(0, 3) for i in x]
plt.figure(figsize=(20, 8), dpi=100)
plt.plot(x, y_shanghai, label='shanghai')# label值表示图例,用来指明每条曲线的含义
plt.plot(x, y_beijing, color='r', linestyle='--', label='beijing')
# 显示图例
plt.legend(loc='best')
多个坐标系下绘制多个图像
import random
import matplotlib.pyplot as plt
# 设置显示中文字体
from pylab import mpl
mpl.rcParams["font.sans-serif"] = ['SimHei']
# 避免由于字体更改导致部分字符无法正常显示
mpl.rcParams['axes.unicode_minus'] = False
# 0.准备数据
x = range(60)
y_shanghai = [random.uniform(15, 18) for i in x]
y_beijing = [random.uniform(0, 3) for i in x]
# 1.创建画布
fig, axes = plt.subplots(nrows=1, ncols=2, figsize=(20, 8), dpi=100)
# 2.绘制图像
axes[0].plot(x, y_shanghai, label='shanghai')
axes[1].plot(x, y_beijing, color='r', linestyle='--', label='beijing')
axes[0].legend(loc='best')
axes[1].legend(loc='best')
# 3.添加x,y轴刻度
x_ticks_label = ['11点{}分'.format(i) for i in x]
y_ticks = range(40)
axes[0].set_xticks(x[::5])
axes[0].set_yticks(y_ticks[::5])
axes[0].set_xticklabels(x_ticks_label[::5])
axes[1].set_xticks(x[::5])
axes[1].set_yticks(y_ticks[::5])
axes[1].set_xticklabels(x_ticks_label[::5])
# 添加网格显示
axes[0].grid(True, linestyle='--', alpha=1)
axes[1].grid(True, linestyle='--', alpha=1)
# 添加描述信息
axes[0].set_xlabel('时间')
axes[0].set_ylabel('温度')
axes[0].set_title('温度变化示意图', fontsize=20)
axes[1].set_xlabel('时间')
axes[1].set_ylabel('温度')
axes[1].set_title('温度变化示意图', fontsize=20)
plt.savefig('test.png')
plt.show()
常见图形绘制
- 散点图:plt.scatter(x, y)
- 柱状图:plt.bar(x, width, align=‘center’, **kwargs)
**kwargs有color等属性 - 直方图:plt.hist(x, bins=None)
- 饼图:plt.pie(x, labels=, autopct=, colors=)