机器学习入门--------matplotlib学习
学习目标
目标
- 了解什么是matplotlib
- 为什么要学习matplotlib
- matplotlib简单图形的绘制
1、什么是matplotlib
- matplotlib是专门用于开发2D图表(包括3D图表)
- 以渐进、交互式方式实现数据可视化
2、matplotlib作用
可视化是在整个数据挖掘的关键辅助工具,可以清晰的理解数据,从而调整我们的分析方法。
- 能将数据进行可视化,更直观的呈现
- 使数据更加客观、更具说服力
例如下面两个图为数字展示和图形展示:
3、通过matplotlib画图(实现一个简单的折线图)
通过matplotlib.pytplotll来画图,类似于matlab的画图函数。
import matplotlib.pyplot as plt
##绘制画布
plt.figure(figsize=(20,8),dpi=100)
##绘制折线图
x = [1,2,3,4,5,6,7]
y = [10,15,17,20,19,17,16]
plt.plot(x,y)
##显示图像
plt.show()
4、实现基础图形绘图功能
画出某城市11点到12点1小时内每分钟的温度变化折线图,温度范围在15度~18度
效果:
实现基本功能
import matplotlib.pyplot as plt
import random
from pylab import mpl
# 设置显示中文字体
mpl.rcParams["font.sans-serif"] = ["SimHei"]
# 设置正常显示符号
mpl.rcParams["axes.unicode_minus"] = False
##1、准备数据
x = range(60)
y = [random.uniform(15,18) for i in x]
##2、绘制画布
plt.figure(figsize=(20,8),dpi=100)
##3、绘制图像
plt.plot(x,y)
##4、显示
plt.show()
实现其它功能
import matplotlib.pyplot as plt
import random
from pylab import mpl
# 设置显示中文字体
mpl.rcParams["font.sans-serif"] = ["SimHei"]
# 设置正常显示符号
mpl.rcParams["axes.unicode_minus"] = False
#1、准备数据
x = range(60)
y_temp = [random.uniform(15,18) for i in x]
##2、绘制画布
plt.figure(figsize=(20,8),dpi=100)
##3、绘制图像
plt.plot(x,y_temp)
#3.1添加x、y轴刻度
##构造x轴刻度标签
x_ticks_lable = ["11点{0}分".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])
#添加网格显示 True 显示网格线 linestyle="--" 线条格式,alpha=0.5 透明度
plt.grid(True,linestyle="--",alpha=0.5)
# 添加描述信息
plt.xlabel("时间",fontsize=10)
plt.ylabel("温度",fontsize=10)
plt.title("某城市11时-12时的温度变化曲线",fontsize=20)
#图像保存 必须放到show前,因为show会释放资源
plt.savefig('./temp.png')
##4、显示
plt.show()
5、实现多条曲线
import matplotlib.pyplot as plt
import random
from pylab import mpl
# 设置显示中文字体
mpl.rcParams["font.sans-serif"] = ["SimHei"]
# 设置正常显示符号
mpl.rcParams["axes.unicode_minus"] = False
#1、准备数据
x = range(60)
y_temp = [random.uniform(15,18) for i in x]
y_temp1 = [random.uniform(5,10) for i in x]
##2、绘制画布
plt.figure(figsize=(20,8),dpi=100)
##3、绘制图像
plt.plot(x,y_temp,label="temp")
plt.plot(x,y_temp1,label="temp1",color='r',linestyle='--')
#3.1添加x、y轴刻度
##构造x轴刻度标签
x_ticks_lable = ["11点{0}分".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])
#添加网格显示 True 显示网格线 linestyle="--" 线条格式,alpha=0.5 透明度
plt.grid(True,linestyle="--",alpha=0.5)
# 添加描述信息
plt.xlabel("时间",fontsize=10)
plt.ylabel("温度",fontsize=10)
plt.title("某城市11时-12时的温度变化曲线",fontsize=20)
#显示图列
plt.legend(loc='best')
#图像保存 必须放到show前,因为show会释放资源
plt.savefig('./temp.png')
##4、显示
plt.show()
图形风格和图列显示位置
图形风格
图列显示位置
6、实现多个坐标轴
实现多个坐标轴用subplots函数来实现。用matplotlib.pyplot.subplots(nrows=1, ncols=1, **fig_kw)
创建一个带有多个axes(坐标系/绘图区)的图
注意:plt.函数名()相当于面向过程的画图方法,axes.set_方法名()相当于面向对象的画图方法。
import matplotlib.pyplot as plt
import random
from pylab import mpl
# 设置显示中文字体
mpl.rcParams["font.sans-serif"] = ["SimHei"]
# 设置正常显示符号
mpl.rcParams["axes.unicode_minus"] = False
#1、准备数据
x = range(60)
y_temp = [random.uniform(15,18) for i in x]
y_temp1 = [random.uniform(5,10) for i in x]
##2、绘制画布
##plt.figure(figsize=(20,8),dpi=100)
## nrows=1,ncols=2 一行两列
fig,axes = plt.subplots(nrows=1,ncols=2,figsize=(20,8),dpi=100)
##3、绘制图像
axes[0].plot(x,y_temp,label="temp")
axes[1].plot(x,y_temp1,label="temp1",color='r',linestyle='--')
#3.1添加x、y轴刻度
##构造x轴刻度标签
x_ticks_lable = ["11点{0}分".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])
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])
#添加网格显示 True 显示网格线 linestyle="--" 线条格式,alpha=0.5 透明度
#plt.grid(True,linestyle="--",alpha=0.5)
axes[0].grid(True,linestyle="--",alpha=0.5)
axes[1].grid(True,linestyle="--",alpha=0.5)
# 添加描述信息
# plt.xlabel("时间",fontsize=10)
# plt.ylabel("温度",fontsize=10)
axes[0].set_xlabel("时间",fontsize=10)
axes[0].set_ylabel("温度",fontsize=10)
axes[1].set_xlabel("时间",fontsize=10)
axes[1].set_ylabel("温度",fontsize=10)
# plt.title("某城市11时-12时的温度变化曲线",fontsize=20)
axes[0].set_title("某城市11时-12时的温度变化曲线",fontsize=20)
axes[1].set_title("某城市11时-12时的温度变化曲线",fontsize=20)
#显示图列
# plt.legend(loc='best')
axes[0].legend(loc='best')
axes[1].legend(loc='best')
#图像保存 必须放到show前,因为show会释放资源
plt.savefig('./temp.png')
##4、显示
plt.show()