python可视化模块—快速利用matplot绘制图表


一、Matplotlib基本介绍

  • Matplotlib是一个可视化绘图库。可以使用这个库轻松地完成线形图、直方图、条形图、误差图或散点图等操作,设置标签、图例、调整绘图大小等。是python中使用最广的绘图库。有很多库(如pandas,seaborn)的绘图功能都是基于matplotlib实现的。

  • pyplot 是Matplotlib的一个基于状态的接口,可以快速的 绘制图表,通常我们绘图只需要通过pyplot的接口就可以了。

  • 在Jupyter notebook中进行交互式绘图,需要执行一下语句:
    %matplotlib notebook

  • 使用matplotlib时,使用的导入的语句
    import matplotlib.pyplot as plt
    from matplotlib import pyplot as plt


二、两种绘图方式区别(plt.*** 和ax.***)

在这里插入图片描述
利用matplotlib画图有两种方式,一个直接调用pyplot模型中的相应函数就可以完成绘图,称为过程式绘图;另一种可以在画布上显示多个图表,称为面向对象绘图,fig.subplots()无参数创建图表,默认创建一个图表。

先matplotlib架构上理解,可以理解为:

matplotlib架构上分为三层  
底层:backend layer
中层:artist layer  
最高层:scripting layer

在任意一层操作都能够实现画图的目的,而且画出来还都一样。但越底层的操作越细节话,越高层越易于人机交互。

plt. 对应的就是最高层 scripting layer。这就是为什么它简单上手,但要调细节就不灵了。

ax.plot 是在 artist layer 上操作。基本上可以实现任何细节的调试。

三、如何使用Matplotlib绘图

快速绘图的流程:从左往右
在这里插入图片描述

1、画布—绘画的画板

函数接口 函数作用 参数说明
plt.figure() 创建一个新的绘图窗口,设置画布大小。 figsize:参数格式为(width,height),单位为inch。dpi参数:分辨率,指每inch像素数。默认dpi为100。例figsize=(18,6)
fig.add_subplot(row,col,index) 在新的绘图窗口上创建子图,子图相互独立 无显式参数,逗号可以省略,fig.add_subplot(2,2,2)与fig.add_subplot(222)都可以。 row:行,col:列,index:子图的位置
plt.show() 显示当前figure图像
plt.close() 关闭当前figure窗口

过程式绘图

import matplotlib.pyplot as plt
plt.plot(x,y)	#绘制拆线图
plt.show()		#显示图形

说明:依次调用pyplot模块中的相应函数就可以完成绘图。

面向对象绘图

import matplotlib.pyplot as plt
fig=plt.figure(figsize=(18,6))
ax1=fig.add_subplot(2,2,1) # 创建2*2=4张图,ax1画在第一张图上
ax2=fig.add_subplot(2,2,2) # 创建2*2=4张图,ax2画在第二张图上
ax3=fig.add_subplot(2,2,3) # 创建2*2=4张图,ax3画在第三张图上
ax4=fig.add_subplot(2,2,4) # 创建2*2=4张图,ax4画在第四张图上
plt.show()  # 显示画布
plt.close() # 关闭画布

说明:
1、先通过plt.figure()函数创建一张完整的画面,作为底层,之后的所有操作都在这张画布上完成。
2、再通过figure.add_subplot()函数创建子图,相当于在已创建的画布上再叠加子图,子画布间相互独立,这样就可以达到一次性完成多幅图片的效果。
在这里插入图片描述

3、创建多个子图,可通过循环最后一个参数达到效果。

fig=plt.figure(figsize=(18,6))

for i in range(1,5):
	ax=fig.add_subplot(2,2,i)

plt.show()
plt.close()

4、在一张画布上创建子图的其他方法

#方法1
fig=plt.figure()
ax=fig.add_axes([left, bottom, width, height])

#方法2
fig,ax=plt.subplots(行数, 列数)

2、配置—更个性化的绘图

全局配置

过程式和面向对象式配图都适用

  • 指定中文字体
函数接口 函数作用 参数说明
matplotlib.font_manager.FontProperties() 指定中文字体 font_path:指定字体的路径。
# 指定中文字体样式、大小
import matplotlib.font_manager as mfm
# 请换成自己电脑的字体路径
font_path = r"c:\windows\Fonts\simsun.ttc"
prop = mfm.FontProperties(fname = font_path)

fig = plt.figure() 
ax1 = fig.add_subplot(111)
ax1.set_title('你好',fontproperties=prop,fontsize=20)
plt.show()
  • 指定全局画图主题
函数接口 函数作用 参数说明
plt.style.use() 指定画图主题 无显式参数,style_name:设置主题名
  • 常用主题:
    • ’ggplot’
    • ‘seaborn-bright’
    • ‘seaborn-white’
    • ‘seaborn-darkgrid’
    • ‘season-deep’
# 查看所有主题
plt.style.available 

在这里插入图片描述

# 指定全局画图主题为ggplot
plt.style.use('ggplot')

在这里插入图片描述

局部配置

面向对象绘图过程:ax代表子图变量
  • 图表标题设置
函数接口 函数作用 参数说明
ax.set_title() 在当前图形中添加主题,可以指定标题的名称、位置、颜色、字体大小等参数。 label:标题文字,fontsize:指定字体大小,color:指定字体颜色,loc可选值为{‘left’,‘center’,‘right’},默认值为’center’

ax.set_title(“sample”):设置图表标题。
ax.set_title(“title”, loc=‘left’):设置图表标题位置。

  • 坐标轴设置
函数接口 函数作用 参数说明
ax.set_xlabel() 当前图形中添加x轴名称,可以指定标题的名称、位置、颜色、字体大小等参数。 xlabel:标签文字,fontsize:指定字体大小
ax.set_ylabel() 当前图形中添加y轴名称,可以指定标题的名称、位置、颜色、字体大小等参数。 ylabel:标签文字,fontsize:指定字体大小
ax.set_xlim() 设置当前图形中x轴的范围,只能确定一个数值区间,而无法使用字符串标识。 left:指定最小值,right:指定最大值,可以使用tuple合并表示(left,right)
ax.set_ylim() 设置当前图形中y轴的范围,只能确定一个数值区间,而无法使用字符串标识。 bottom:指定最小值,top:指定最大值,可以使用tuple合并表示(bottom,top)
ax.set_xticks() 指定x轴刻度的数目与取值。 ticks:传入列表,每个元素代表一个刻度值。
ax.set_yticks() 指定y轴刻度的数目与取值。 ticks:传入列表,每个元素代表一个刻度值。
ax.set_xticklabels() 设置x轴刻度的显示值。 labels:每个刻度上显示的值,fontsize:指定字体大小
ax.set_yticklabels() 设置y轴刻度的显示值。 labels:每个刻度上显示的值,fontsize:指定字体大小
ax.hlines() 设置水平线 y:某个纵坐标,固定值。xmin:横坐标最小值。xmax:横坐标最大值。
ax.vlines() 设置垂直线 x:某个纵坐标,固定值。ymin:横坐标最小值。ymax:横坐标最大值。
ax2=ax1.twinx() 子图ax1、ax2共享x轴
ax2=ax1.twiny() 子图ax1、ax2共享y轴

设置坐标轴标签文本
ax.set_xlabel(‘X axis’)
ax.set_ylabel(‘Y axis’)

设置x,y轴坐标刻度显示范围
ax.set_xlim(-3.5,3.5)
ax.set_ylim(-1.5,1.5)

设置主刻度坐标
ax.set_xticks([-4,-2,0,2,4])
ax.set_yticks([-1,-0.5,0,0.5,1])
设置次刻度坐标
ax.set_xticks(np.arange(-4,4,0.5),minor=True)
ax.set_yticks(np.arange(-1.5,1.5,0.1),minor=True)

  • 图例
函数接口 函数作用 参数说明
ax.legend 指定当前图形的图例,可以指定图例大小、位置、标签。 labels:标签名。loc:图例的位置。bbox_to_anchor:指定图例的位置(横坐标,纵坐标)(横纵最大1.0,最小0.0)。prop:等同于fontproperties。fontsize:字体大小。

ax.legend(loc=‘upper right’):自定义图例位置。

  • loc 可选择的参数
    • ‘best’:自动选择最佳位置
    • ‘upper left’:左上角
    • ’upper right’:右上角
    • ‘lower left’:左下角
    • ‘lower right’:右下角
    • ‘center left’:中左
    • ‘center right’:中右
    • ‘lower center’:中下
    • ‘upper center’:中上

ax.legend(fontsize=‘samll’) 自定义图例文字大小。
ax.legend(fontsize=10)

  • fontsize 可选择的参数

    • 相对大小(字符串)
      ‘xx-small’,‘x-small’,‘smal’:小于当前默认字体大小
      ‘medium’:中等
      ‘large’,‘x-large’,‘xx-large’:大于当前默认字体大小
    • 绝对大小(数值)
      fontsize=10:绝对字体大小,单位为点。

ax.legend(labelcolor=[‘r’,‘b’]):设置图例文本颜色。
ax.legend(mode=‘expand’):图例水平平铺。

  • 保存图形
函数接口 函数作用 参数说明
plt.savefig() 保存图片 fname:文件名;dpi:像素,单个数值即可。

plt.savefig(“sample.png”)

  • 支持如下格式:
    jpg, jpeg:jpg图
    png:png图
    svg, svgz:svg图
    tif, tiff:tiff图
    pgf:pgf位图
    pdf, eps, ps:pdf或postscript文件
    raw, rgba

面向对象画图的代码示例

#准备数据
import numpy as np
x=np.linspace(-np.pi,np.pi,100)
y=np.sin(x)

#导入matplotlib库pyplot模块
import matplotlib.pyplot as plt

#创建画布
fig=plt.figure()

#创建图表
ax=fig.subplots()

#绘制折线图,设置点线样式,设置线条名称
ax.plot(x,y,'+r--', label='line1',mec='b',ms=10)  #点为蓝色+(大小为10),线为红色虚线

#设置坐标轴
ax.set_xlabel('X axis')            #坐标轴文本标签
ax.set_ylabel('Y axis')
ax.set_xticks([-4,-2,0,2,4])       #主刻度
ax.set_xticks(np.arange(-4,4,0.5),minor=True)  #次刻度
ax.set_yticks([-1,-0.5,0,0.5,1])
ax.set_yticks(np.arange(-1.5,1.5,0.1),minor=True)
ax.tick_params(axis='y',labelrotation=30)      #y轴主刻度文字旋转30度
ax.set_xlim(-3.5,3.5)              #设置显示刻度范围
ax.set_ylim
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值