0 Matplot无法显示中文
font.family : sans-serif
# 对应SimHei字体
font.sans-serif : SimHei
axes.unicode_minus : False
1 什么是Matplotlib
- Matplotlib是专门用于开发2D图表,以渐进、交互方式实现数据可视化
2 实现简单的Matplotlib绘图
2.1 引入模块
import matplotlib.pyplot as plt
2.2 绘图流程
'''
figize -- 指定图长和高
dpi -- 图像清晰度
返回fig对象
'''
plt.figure(figize=(), dpi=)
- 绘制图像
plt.plot(x,y),x代表x轴数据,y同理,均使用列表表示
- 展示图像
plt.show()
3 示例
# 导入模块
import matplotlib.pyplot as plt
# 创建画布
plt.figure(figsize=(5,3), dpi=100)
# 绘制图像
plt.plot([1,2,3,4,5,6,7], [10,12,13,12,15,13,10])
# 展示图像
plt.show()
![8]()
4 示例Plus
import matplotlib.pyplot as plt
import random
# 准备数据
x = range(60)
y_cq = [random.uniform(15, 18) for i in x]
# 创建画布
plt.figure(figsize=(5, 3), dpi=100)
# 绘制折线图
plt.plot(x, y_cq)
# 展示图
plt.show()
![9]()
# x:要显示的刻度值
plt.xticks(x, **kwargs)
# y:要显示的刻度值
plt.yticks(y, **kwargs)
'''
开启网格显示,网格线样式为--,网格线透明度为0.5(1最大)
'''
plt.grid(True, linestyle='--', alpha=0.5)
# fontsize用于设置标题大小
plt.xlabel("时间")
plt.ylabel("温度")
plt.title("11点至12点某地温度变化图", fontsize=20)
- 图像保存,一定要在
plt.show()之前保存图像,否则图像资源会被释放,保存图像为空
plt.savefig("temp.png")
import matplotlib.pyplot as plt
import random
#1 准备数据
x = range(60)
y_cq = [random.uniform(15, 18) for i in x]
#2 创建画布
plt.figure(figsize=(20, 8), dpi=100)
#3 绘制折线图
plt.plot(x, y_cq)
#3.1 添加x,y轴刻度
x_ticks_lable = ['11点{}分'.format(i) for i in x]
y_ticks = range(40)
#3.2 修改x,y轴坐标刻度显示,步长为5
# plt.xticks(x_ticks_lable[::5]) #坐标刻度不能直接通过字符串进行修改
plt.xticks(x[::5], x_ticks_lable[::5])
plt.yticks(y_ticks[::5])
#3.3 添加网格显示
plt.grid(True, linestyle='--', alpha=0.5)
#3.4 添加描述信息
plt.xlabel("时间", fontsize = 20)
plt.ylabel("温度", fontsize = 20)
plt.title("11点至12点某地温度变化图", fontsize=20)
#4 展示图
plt.show()
![10]()
5 在一个坐标系中绘制多个图像
y_sc = [random.uniform(10, 15) for i in x]
'''
color颜色:
r g b w c m y k
红 绿 蓝 白 青 红 黄 黑
linestyle线条风格:
- -- -. : ''
实线 虚线 点划线 点虚线 空格
lable线条标签
'''
plt.plot(x, y_sc, color='r', linestyle='--', label="四川")
'''
best 0
upper right 1
upper left 2
lower left 3
lower right 4
right 5
center left 6
center right 7
lower center 8
upper center 9
center 10
'''
plt.legend(loc="best")
import matplotlib.pyplot as plt
import random
#1 准备重庆,四川温度数据
x = range(60)
y_cq = [random.uniform(15, 18) for i in x]
y_sc = [random.uniform(10, 15) for i in x]
#2 创建画布
plt.figure(figsize=(20, 8), dpi=100)
#3 绘制折线图
plt.plot(x, y_cq, label="重庆")
plt.plot(x, y_sc, color='r', linestyle='--', label="四川")
#3.1 添加x,y轴刻度
x_ticks_lable = ['11点{}分'.format(i) for i in x]
y_ticks = range(40)
#3.2 修改x,y轴坐标刻度显示,步长为5
plt.xticks(x[::5], x_ticks_lable[::5])
plt.yticks(y_ticks[::5])
#3.3 添加网格显示
plt.grid(True, linestyle='--', alpha=0.5)
#3.4 添加描述信息
plt.xlabel("时间", fontsize = 20)
plt.ylabel("温度", fontsize = 20)
plt.title("11点至12点某地温度变化图", fontsize=20)
#3.6 显示图例
plt.legend(loc="best")
#4 展示图
plt.show()
![11]()
6 在多个坐标系中绘制多个图像