Python机器学习基础--matplotlib库(上)

目录

  • matplotlib库
        • 案例:生成一个折线图
    • 画布与坐标系
    • 子绘图区域
        • 案例一:生成多个子图
    • Matplotlib常用符号
    • 显示网格
        • 案例二:生成一个带网格线的折线图
    • 显示图例
        • 案例三:生成一个带图例的折线图
    • 显示中文
      • 中文显示方法(一)
      • 中文显示方法(二)
    • 显示负号
    • 显示注释
      • 显示标题
        • 案例四:标题显示函数使用
      • x轴和y轴注释
      • 在指定位置放置注释
        • 案例五:在指定位置添加箭头
    • 其他设置

matplotlib库

优秀数据可视化第三方库,可以绘制多种形式的图形1,依赖于numpy模块和tkinter模块(更多信息请访问:matplotlib官网)

案例:生成一个折线图

import matplotlib.pyplot as plt
plt.plot([3,1,4,5,2])
plt.ylabel('num')
plt.savefig('test_1',dpi=600)
plt.show()

运行结果
Python机器学习基础--matplotlib库(上)_第1张图片

画布与坐标系

在上面的例子中我们没有定义画布的语句,生成图形式使用默认画布,在程序中可以使用figure()函数创建一个自定义画布对象,语法格式:fig=plt.figure(num=None,figsize=None,dpi=None,facecolor=None,edgecolor=None,frameon=None)
参数

参数 描述
num 图像名称或索引号
figsize 画布的宽和高,单位英寸
dpi 绘图对象的分辨率
facecolor 背景颜色
edgecolor 边款颜色
frameon 是否显示边款

创建一个画布对象后,可以进一步控制图表的绘制,如添加子图,语法格式:fig.add_subplot(numrows,numcols,fignum),三个参数分别表示子图的行数、列数、索引号,如add_subplot(1,1,1)表示在一张画布中只设置一张子图

子绘图区域

语法格式:plt.subplot(nrows,ncols,plot_number),三个参数分别为行数、列数、索引号2

案例一:生成多个子图

#coding: utf-8
 
import numpy as np
import matplotlib.pyplot as plt
 
x = np.arange(1, 100)
 
fig = plt.figure()
 
ax1 = plt.subplot(221)
ax1.plot(x, x)
 
ax2 = plt.subplot(222)		# 等同于fig.add_subplot(222)
ax2.plot(x, -x)
 
ax3 = plt.subplot(223)
ax3.plot(x, x ** 2)
 
ax4 = plt.subplot(224)
ax4.plot(x, np.log(x))
 
# plt.subplots_adjust(wpace=None,hpace=None)  分别用于调整子图的左右间距和上下间距
plt.show()

运行结果
Python机器学习基础--matplotlib库(上)_第2张图片

Matplotlib常用符号

控制曲线格式的字符串有三种分别为:颜色字符,风格字符,标记字符
颜色字符

字符 描述
‘b’
‘g’ 绿
‘r’
‘c’ 青绿色
‘m’ 洋红色
‘k’
‘w’
‘#008000’ RGB某颜色

格式字符

字符1 描述 字符2 描述 字符3 描述
‘.’ ‘1’ 下花三角 ‘h’ 竖六边形
‘,’ 像素标记 ‘2’ 上花三角 ‘H’ 横六边形
‘+’ 十字 ‘3’ 左花三角 ‘x’ 十字标记
‘|’ 垂直线 ‘4’ 右花三角 ‘d’ 瘦菱形
‘^’ 上三角 ‘s’ 实心方形 ‘D’ 菱形
‘>’ 右三角 ‘p’ 实心五角 ‘v’ 倒三角
‘<’ 左三角 ‘o’ 实心圈 ‘*’ 星型

风格字符串

字符串 描述
‘-’ 实线
‘–’ 破折线
‘-.’ 点划线
‘:’ 虚线

下面我们将这些字符组合使用
Python机器学习基础--matplotlib库(上)_第3张图片

显示网格

语法格式:grid(b=None,axis=None,color=None,linewidth=None,linestyle=None)
参数

参数 描述
axis 取值为(‘both’, ‘x’,‘y’),表示以哪个轴为刻度生成网格
color 表示网格线颜色,
linewidth 表示网格线宽度
linstyle 网格线的显示类型

案例二:生成一个带网格线的折线图

import matplotlib.pyplot as plt
import numpy as np
x=np.arange(0,21)
plt.plot(x,x**2)
plt.grid(True,linestyle='-.')
plt.show()

运行结果
Python机器学习基础--matplotlib库(上)_第4张图片

显示图例

语法格式:legend(loc=None,ncol=None),其中loc表示图例显示的位置,ncol表示图例的列数

loc参数 含义 英文参数 loc参数 含义 英文参数
0 根据图形自适应,显示在最佳的位置 best 6 中部左边 center left
1 图像右上角 upper right 7 中部右边 center right
2 左上角 upper left 8 下部中心 lower center
3 左下角 lower left 9 上部中心 upper center
4 右下角 lower right 10 图形中心 center
5 图形右边 right

案例三:生成一个带图例的折线图

import matplotlib.pyplot as plt
import numpy as np
x=np.arange(1,11,1)
plt.plot(x,x*2,label='double')
plt.plot(x,x*3,label='triple')
plt.plot(x,x*4,label='fourfold')
plt.legend(loc=0,ncol=2)		# 自适应,两列图例
plt.show()

Python机器学习基础--matplotlib库(上)_第5张图片

显示中文

pyplot并不默认支持中文,如果使用前未进行声明,程序会提出警告
Python机器学习基础--matplotlib库(上)_第6张图片

中文显示方法(一)

使用rcParams修改字体
Python机器学习基础--matplotlib库(上)_第7张图片
rcParams属性

属性 描述
‘font.family’ 用于显示字体名称
‘font.style’ 字体风格,"normal"正常,"italic"斜体
‘font.size’ 字体大小,整数字号或’large’

font.family中文字体种类

字体 描述
‘SimHei’ 黑体
‘Kaiti’ 楷书
‘LiSu’ 隶书
‘FangSong’ 仿宋
‘STSong’ 华文宋体

中文显示方法(二)

中文出现的地方添加属性:fontproperties
Python机器学习基础--matplotlib库(上)_第8张图片

显示负号

matplotlib并不默认支持显示负数,同样,我们使用rcParams属性修改使其显示

matplotlib.rcParams['axes.unicode_minus'] = False

显示注释

图形中的注释常用于解释图形的含义

显示标题

  1. 标题为普通文本时,直接使用title()函数设置,语法格式:titile(str),用于在坐标系上现实标题
  2. 标题为数学公式时,需要使用LaTex格式的文本来设置标题

案例四:标题显示函数使用

import numpy as np
import matplotlib.pyplot as plt
import matplotlib
matplotlib.rcParams['font.family']='SimHei'
x=np.arange(10,20)

plt.subplot(211)
plt.title('一次函数')
plt.plot(x,0.25*(x-2))

plt.subplot(212)
plt.title(r'$f(x)= \frac{1}{4}(x-2)$')
plt.plot(x,0.25*(x-2))
plt.subplots_adjust(wspace =0, hspace =1)
plt.show()

运行结果
Python机器学习基础--matplotlib库(上)_第9张图片

x轴和y轴注释

函数 描述
xlabel(str) x轴注释
ylabel(str) y轴注释

在指定位置放置注释

函数 描述
text() 在任意位置添加注释
annotate() 在任意位置添加带箭头的注释,

案例五:在指定位置添加箭头

import numpy as np
import matplotlib.pyplot as plt
import matplotlib
matplotlib.rcParams['font.family']='SimHei'
matplotlib.rcParams['axes.unicode_minus'] = False

a=np.arange(0,5,0.02)
plt.xlabel('时间',fontproperties='SimHei',fontsize=15)
plt.ylabel('振幅',fontproperties='Lisu',fontsize=15)
plt.title('标题',fontproperties='SimHei',fontsize=20)

# 文本注释
plt.subplot(211)
plt.plot(a,np.cos(a*np.pi*2),'g--')
plt.text(2,1,'y=1',bbox={'facecolor':'r','edgecolor':'y','boxstyle':'round'}) # bbox参数用于设置插入注释的参数
plt.axis([-1,6,-2,2])	# 用于设置xy轴的宽度
plt.grid(True)	# 用于生成表格

# 箭头注释
plt.subplot(212)
plt.plot(a,np.cos(a*np.pi*2),'g--')
plt.annotate(r'y=1',xy=(2,1),xytext=(3,1.5),arrowprops=dict(facecolor='black',shrink=0.1,width=1))	# arrowprops参数用于设置箭头的样式
plt.axis([-1,6,-2,2])
plt.grid(True)

plt.show()

运行结果
Python机器学习基础--matplotlib库(上)_第10张图片

其他设置

xy轴范围设置

函数 描述
axis[xmin,xmax,ymin,ymax] 同时设置x,y轴的范围
xlim(xmin,ymin) 设置x轴范围
ymin(ymin,ymax) 设置y轴范围

xy轴刻度设置

函数 描述
locator_params(axis,nbins=None) axis表示x或y轴,nbins表示把坐标轴分为几份

日期刻度的显示

函数 描述
autofmt_xdate() 调整日期的排列根据图像大小自适应

将图像保存为图片

函数 描述
savefig(path,dpi) 将生成图形输出为文件,默认png,dpi设置图片的质量

  1. 计算机中通过程序绘制图形有两种方式:位图和矢量图,位图是一个个像素绘制的图形,矢量图是将多个点进行连接的图形,matploylib的绘图方式属于后者,也就是连接相邻的两个点形成一条曲线 ↩︎

  2. subplot()函数的作用同add_subplot()函数,两者都生成若干个子图,区别是前者作用的对象是pyplot模块,后者作用的对象是画布对象figure ↩︎

你可能感兴趣的:(python机器学习,python)