Matplotlib的使用
- Matplotlib:可以用来画图的工具,为了让数据看起来更加直观。
- 定义
主要用于开发2D图表(3D),数据分析,基于分析,进行展示 - 绘图流程
- 创建画布
- 绘制图像
- 显示图像
- 定义
点击查看代码
import matplotlib.pyplot as plt
# 1.创建画布
plt.figure
#2. 图像绘制
x = [1,2,3,4,5,6]
y = [3,6,3,6,3,10]
plt.plot(x,y)
# 3.图像展示
plt.show()
-
matplotlib三层结构
- 容器层
- canvas
- figure
- axes
- 辅助显示层
添加X轴,y轴描述,标题..... - 图像层
绘制什么图像的声明
- 容器层
-
图像的保存
# 1.创建画布
# figsize指画布大小,dpi指像素
plt.figure(figsize=(20,8),dpi=100)# 2. 图像绘制 x = [1,2,3,4,5,6] y = [3,6,3,6,3,10] plt.plot(x,y) # 2.1 图像保存 plt.savefig("./data/demo.png") #保存在根目录下面的data文件夹里面,名字Wiedemo.png # 3.图像展示 plt.show() # 注意,当show之后,就释放资源了,就不可以在进行其他的操作了
-
添加x,y轴
import matplotlib.pyplot as plt
import random# 0.生成数据 x = range(60) # 列表生成式 y = [random.uniform(10,15) for i in x] # 1.创建画布 plt.figure(figsize=(20,8),dpi=100) # 2.图像绘制 plt.plot(x,y) # 2.1 添加x,y轴刻度 y_ticks = range(40) # 这一步出现['11点0分','11点1分','11点2分','11点3分','11点4分'。。。 x_ticks_labels = ["11点{}分".format(i) for i in x] # 控制y轴,每一格之间的距离是5 plt.yticks(y_ticks[::5]) # 控制x轴,每一个格之间距离是5,且显示为11点0分,11点5分。。。 plt.xticks(x[::5],x_ticks_labels[::5]) # 3.图像展示 plt.show()
-
添加网格
# True代表添加网格;linestyle="--"代表网格为虚线,“-”代表为实线,alpha=1代表为透明度
plt.grid(True,linestyle="--",alpha=1) -
添加描述
# 2.3 添加描述
plt.xlabel("时间")
plt.ylabel("温度")
plt.title("一小时温度变化图",fontsize=20)
如果汉字不显示,则这样解决:
import matplotlib.pyplot as plt
plt.rc('font', family='SimHei', size=13)
-
绘制多个曲线并显示图例
import matplotlib.pyplot as plt
import random
import matplotlib.pyplot as plt
plt.rc('font', family='SimHei', size=20)# 0.生成数据 x = range(60) y_beijing = [random.uniform(10,15) for i in x] y_shanghai = [random.uniform(15,25) for i in x] # 1.创建画布 plt.figure(figsize=(20,8),dpi=100) # 2.图像绘制,显示图例的话需要在这个里面假如label plt.plot(x,y_beijing,label="北京") plt.plot(x,y_shanghai,label="上海") # 2.1 添加x,y轴刻度 y_ticks = range(40) # 这一步出现['11点0分','11点1分','11点2分','11点3分','11点4分'。。。 x_ticks_labels = ["11点{}分".format(i) for i in x] # 控制y轴,每一格之间的距离是5 plt.yticks(y_ticks[::5]) # 控制x轴,每一个格之间距离是5,且显示为11点0分,11点5分。。。 plt.xticks(x[::5],x_ticks_labels[::5]) # 2.2 添加网格 # True代表添加网格;linestyle="--"代表网格为虚线,“-”代表为实线,alpha=1代表为透明度 plt.grid(True,linestyle="--",alpha=1) # 2.3 添加描述 plt.xlabel("时间") plt.ylabel("温度") plt.title("一小时温度变化图",fontsize=20) # 2.4 显示图例 plt.legend() # 3.图像展示 plt.show()
-
多个坐标系显示图像
import matplotlib.pyplot as plt
import random
import matplotlib.pyplot as plt
plt.rc('font', family='SimHei', size=13)# 0.生成数据 x = range(60) y_beijing = [random.uniform(10,15) for i in x] y_shanghai = [random.uniform(15,25) for i in x] # 1.创建画布,nrows代表几行,ncols代表几列 fig, axes = plt.subplots(nrows=1,ncols=2,figsize=(20,8),dpi=100) # 2.图像绘制,显示图例的话需要在这个里面加入label axes[0].plot(x,y_beijing,label="北京",color="g",linestyle="-.") axes[1].plot(x,y_shanghai,label="上海") # 2.1 添加x,y轴刻度 y_ticks = range(40) # 这一步出现'11点0分','11点1分','11点2分','11点3分','11点4分'。。。 x_ticks_labels = ["11点{}分".format(i) for i in x] axes[0].set_xticks(x[::5]) axes[0].set_yticks(y_ticks[::5]) axes[0].set_xticklabels(x_ticks_labels[::5]) axes[1].set_xticks(x[::5]) axes[1].set_yticks(y_ticks[::5]) axes[1].set_xticklabels(x_ticks_labels[::5]) # 2.2 添加网格 axes[0].grid(True,linestyle="--",alpha=1) axes[1].grid(True,linestyle="--",alpha=1) # 2.3添加描述 axes[0].set_xlabel("时间") axes[0].set_ylabel("温度") axes[0].set_title("北京一小时温度变化图") axes[1].set_xlabel("时间") axes[1].set_ylabel("温度") axes[1].set_title("上海一小时温度变化图") # 2.4显示图例 axes[0].legend(loc=0) axes[1].legend(loc=0) # 3.图像展示 plt.show()