Matplotlib学习笔记(2)--Matplotlib面向对象绘图

Matplotlib面向对象简介

Matplotlib面向对象主要是可以实现更加定制化的绘图,但相比于通过直接使用pyplot而言使用也更加复杂。Matplotlib中大的对象主要分为三个,FigureCanvas(画布),Figure(图),Axes(绘制的坐标轴)。

一张图中绘制多个子图

绘制多个子图

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(1, 100)

# 创建一个图
fig = plt.figure()
#331表示,将这个图分为3*3的格式(即一共可以添加9个子图),并添加一号子图
ax1 = fig.add_subplot(331)
ax1.plot(x,x)
#334表示向这个3*3的图中添加四号子图
ax2 = fig.add_subplot(334)
ax2.plot(x,np.log(x))

# 对于同一个figure而言,划分成的格式应该一样
# 例如对于上边的figure而言,fig.add_subplot()中的参数只能是“33X”
# 33表示的是将一个figure按照3*3划分,X表示要操作的子图,取值范围为1-9

plt.show()

生成多张图

生成多张图可以通过创建多个Figure对象来实现

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(0, 100)

fig1 = plt.figure()
ax1 = fig1.add_subplot(111)

ax1.plot(x,x)

fig2 = plt.figure()
ax2 = fig2.add_subplot(111)

ax2.plot(x,-x)

plt.show()

网格背景及图例的显示

网格及图例显示

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(1,10,1)

plt.plot(x,x*2,label="Normal")
plt.plot(x,x*3,label="Fast")
plt.plot(x,x*4,label="Faster")

#网格的显示可以通过plt.grid(True)来显示
plt.grid(True)
#图例的显示可以通过plt.legend()来显示,需要提前给要绘制的图形添加上label
plt.legend()

plt.show()

官网对于legend的参数的详解

官网对于grid的参数的详解

在使用面向对象的绘图中可以通过对Axes的操作来实现图例的显示

x = np.arange(1,10,1)

fig = plt.figure()
ax1 = fig.add_subplot(111)
ax1.plot(x,x*2,label="Normal")
ax1.legend()

plt.show()

调整坐标轴范围

调整坐标轴范围可以有多种方式,

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(1,11,1)

fig = plt.figure()
ax1 = fig.add_subplot(111)
ax1.plot(x,x)
  1. 方式一

    
    #使用plt.axis()函数,四个值分别对应着x轴的起点,终点,y轴的起点,终点
    
    plt.axis([5,10,4,8])
  2. 方式二

    
    #使用plt.xlim()函数
    
    plt.xlim(xmin=2,xmax=8)
    plt.ylim(ymin=2,ymax=8)

调整坐标轴的刻度

调整坐标轴刻度

import numpy as np
import matplotlib.pyplot as plt


x = np.arange(1,11,1)

plt.plot(x,x)

ax = plt.gca()
#只调整x轴刻度
ax.locator_params('x',nbins=20)

plt.show()

调整坐标轴的刻度有两种方式:

  1. 通过Axes对象的locator_params()函数(面向对象的方式)

  2. 通过matplotlib.pyplot的locator_params()函数

两种方式其实使用的都是locator_params(),其有多个参数可供选择

常用参数有:

  • nbins:划分成多少份刻度

  • x:表示调整的是x轴刻度

  • y:表示调整的是y轴刻度

  • 注:若x,y都不填则默认参数为both,即两个轴都会调整

locator_params()官网参数详解

绘制样式的美化

之前的绘制都是直接使用原生的样式来绘制,而Matplotlib内建的提供了更多的多种样式可供我们选择。

#通过使用该方法可以美化我们绘制出的图形
plt.style.use('ggplot')

#该方法可以查看当前可供选择的style
plt.style.available

猜你喜欢

转载自blog.csdn.net/wqc_csdn/article/details/80429732