Python Matplotlib基本用法详解
文章目录
一、什么是Matplotlib?
二、为什么学习Matplotlib
可视化实在整个数据挖掘的关键辅助工具,可以清晰发理解数据,从而调整我们的分析方法。
例如下面的图中为数字展示和图形展示:

三、实现一个简单的Matplotlib画图——以折线图为例
3.1 matplotlib.pyplot模块
matplotlib.pyplot包含一系列类似于matlab的画图函数
import matplotlib.pyplot as plt
3.2 图形绘制流程
plt.figure(figsize=(),dpi=)
#figsize:指定图的长宽
#dpi:图像的清晰度 返回fig对象
以折线图为例
3.3 折线图绘制与显示
举例:展示一周的天气
import matplotlib.pyplot as plt
#创建画布
plt.figure(figsize=(10,10),dpi=100)
#绘制图像
plt.plot([1,2,3,4,5,6,7],[17,17,18,15,11,11,13])
#显示图像
plt.show()
结果:
四、基本绘图功能——以折线图为例
1. 完善原始折线图——给图形添加辅助功能
需求:画出某城市11点到12点1个小时每分钟的温度变化折线图,温度范围在15度~18度
1.1准备数据并画出初始折线图
import matplotlib.pyplot as plt
import random
#准备x,y轴坐标的数据
x=range(60)
y_shanghai=[random.uniform(15,18) for i in x]
plt.figure(figsize=(20,8),dpi=100)
plt.plot(x,y_shanghai)
plt.show()
1.2添加自定义x,y刻度
plt.xticks(x,**kwargs)
x:要显示的刻度值
plt.yticks(y,**kwargs)
y:要显示的刻度值
代码:
import matplotlib.pyplot as plt
import random
#准备x,y轴坐标的数据
x=range(60)
y_shanghai=[random.uniform(15,18) for i in x]
plt.figure(figsize=(20,8),dpi=100)
plt.plot(x,y_shanghai)
#构造x轴刻度标签
x_ticks_lable=["11点{}分".format(i) for i in x]
#构造y轴刻度
y_ticks=range(40)
#修改x,y轴的刻度显示
plt.xticks(x[::5],x_ticks_lable[::5])
plt.yticks(y_ticks[::5])
plt.show()
显示结果:
1.3添加网格显示
添加网格是为了 更清楚地观察图形对应的值
plt.grid(True,linestyle='--',alpha=0.5) #alpha表示透明度,0最浅
1.4添加描述信息
添加x轴、y轴描述信息及标题
plt.xlabel("时间")
plt.ylabel("温度")
plt.title("中午11点0分到12点的温度变化显示",fontsize=20)
1.5图像保存
#保存图片到指定路径
plt.savefig("test.png")
2. 在一个坐标系中绘制多个图像
2.1 多次plot
需求:再添加一个城市的温度变化
收集到北京当天的温度变化情况,温度再1度到3度
#添加北京温度的数据
y_beijing=[random.uniform(1,3)for i in x]
#绘制北京温度的图像
plt.plot(x,y_beijing)
#使用多次plot可以画多个折线
plt.plot(x,y_beijing,color='r',linestyle="--")
2.2 设置图形风格
2.3 添加图例
plt.plot(x,y_shanghai,label="上海")
plt.plot(x,y_beijing,color='r',linestyle="--",label="北京")
#显示图例
plt.legend(loc="best")
3.多个坐标系显示——plt.subplots(面向对象的画图方法)
如果我们想要将上海和北京的天气图显示在同一个图上的不同坐标系当中,效果如下:
可以通过subplots函数实现
代码:
import matplotlib.pyplot as plt
import random
#准备数据
x=range(60)
y_shanghai=[random.uniform(15,18) for i in x]
y_beijing=[random.uniform(1,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="上海")
axes[1].plot(x,y_beijing,color="r",linestyle="--",label="北京")
#3.添加x,y轴刻度
x_ticks_lable=["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_lable[::5])
axes[1].set_xticks(x[::5])
axes[1].set_yticks(y_ticks[::5])
axes[1].set_xticklabels(x_ticks_lable[::5])
#添加网格显示
axes[0].grid(True,linestyle="--",alpha=0.5)
axes[1].grid(True,linestyle="--",alpha=0.5)
#添加描述信息
axes[0].set_xlabel("时间",fontsize=20)
axes[0].set_ylabel("温度",fontsize=20)
axes[0].set_title("中午11点--12点某城市的温度变化图",fontsize=20)
axes[1].set_xlabel("时间",fontsize=20)
axes[1].set_ylabel("温度",fontsize=20)
axes[1].set_title("中午11点--12点某城市的温度变化图",fontsize=20)
#显示图例
axes[0].legend(loc=0)
axes[1].legend(loc=0)
plt.show()
运行结果:
五、折线图的应用场景

代码:
import numpy as np
#0.准备数据
x=np.linspace(-10,10,1000)
y=np.sin(x)
#创建画布
plt.figure(figsize=(20,8),dpi=100)
#绘制函数图像
plt.plot(x,y)
#添加网格
plt.grid()
plt.show()