机器学习入门--------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()

原文地址:https://www.cnblogs.com/yangxiao-/p/14247996.html