Python中的Matplotlib用法

Matplotlib是Python的绘图库,不仅具备强大的绘图功能,还能够在很多平台上使用,所以掌握用它画图的技能很有必要。

  1. Matplotlib的安装
    我们可以通过Anaconda中的命或者“pip install matplotlib"语句来安装Matplotlib,在安装完成后通过运行import matplotlib语句,来检验安装是否成功。如果没有输出报错,则说明安装没有问题,可以正常使用。在实际应用中,我们同样习惯于将“
    import matplotlib写成“ import matplotlib.pyplot as plt”。如果是在Jupyte Notebook 的Notebook文件中使用,要想直接显示Matplotlib 绘制的图像,就需要添加“%matplotlib inline ” 语句.
import matplotlib
%matplotlib inline
  1. 创建图
    a. 线形图
import matplotlib.pyplot as plt
import numpy as np
%matplotlib inline

np.random.seed(42)
x = np.random.randn(30)
plt.plot(x, "r--o")

运行之后,输出内容:

以上代码前三行用于导入需要的包,并让通过Matplotlib绘制的图像直接在notebook中显示,然后通过np.random.seed(42)设置了随机种子,以便之后重现;接着通过np.random.randn(30)生成30个随机参数并赋值给变量x;最后,绘图的核心代码通过plt.plot(x, “r–o”)将这30个随机参数以点的方式绘制出来并用线条连接,传递给plot的参数r–o用于在线型图中标记每个参数点使用的形状、连接参数点使用的线条颜色和线型,而且线型图的横轴和纵轴也是有区别的,纵轴生成的是30个随机数的值,横轴生成的这30个点的索引值,同样是30个。

对上述代码进行些许更改,可以画函数图像

import matplotlib.pyplot as plt
import numpy as np
%matplotlib inline

np.random.seed(42)
x=np.linspace(-5,5,1000) 
y = x ** 2
plt.plot(x,y, "r--o")

运行代码如下:
在这里插入图片描述
注意:

  • 用于设置线型图中线条颜色的常用参数如下:
    "b":指定绘制的线条颜色为蓝色
    "g":指定绘制的线条颜色为绿色
    "r":指定绘制的线条颜色为红色
    "c":指定绘制的线条颜色为蓝绿色
    "m":指定绘制的线条颜色为洋红色
    "y":指定绘制的线条颜色为黄色
    "k":指定绘制的线条颜色为黑色
    "w":指定绘制的线条颜色为白色
  • 用于设置线型图中标记参数点形状的常用参数如下:
    " o ": 指定标记实际点使用的形状为t圆形
    " * ": 指定标记实际点使用的形状为" * "
    "+": 指定标记实际点使用的形状为"+"
    "x": 指定标记实际点使用的形状为"x"
  • 用于设置线型图中连接参数点线条形状的常用参数如下:
    " - ": 指定线条形状为实线
    " – ": 指定线条形状为虚线
    " -. ": 指定线条形状为点实线
    " : ": 指定线条形状为点线

下面看一个使用不同的线条颜色、形状和标记参数点形状的实例.

import matplotlib.pyplot as plt
import numpy as np
%matplotlib inline


a = np.random.randn(30)
b = np.random.randn(30)
c = np.random.randn(30)
d = np.random.randn(30)
plt.plot(a, "r--o", b, "b-*", c, "g-.+", d, "m:x")

运行之后,输入如下:
在这里插入图片描述
以上代之前码的不同是没有使用随机种子,这样做是为了让最后得到的结果有更大的差异性,在绘制的图中对比更明显。

接下来添加标签和图例:

import matplotlib.pyplot as plt
%matplotlib inline
import numpy as np

np.random.seed(42)
x = np.random.randn(30)
y = np.random.randn(40)
plt.title("Example")
plt.xlabel("X")
plt.ylabel("Y")
X, = plt.plot(x, "r--o")
Y, = plt.plot(y, "b-*")
plt.legend([X, Y], ["X", "Y"])

运行后输出如下:
在这里插入图片描述
上图中显示了图标签和图例,这是因为以上代码中添加了标签的显示代码plt.xlabel(“X”)、
plt.ylabel(“Y”)和图例的显示代码plt.legend([X, Y], [“X”, “Y”]),传递给plt.legend的是两个列表参数,第一个列表参数是在图中实际使用的标记和线型,第二个列表参数是对应图例的文字描述。

若需要将多个图像同时在不同的位置显示,则需要用得到子图的功能。

import matplotlib.pyplot as plt
import numpy as np
%matplotlib inline


a = np.random.randn(30)
b = np.random.randn(30)
c = np.random.randn(30)
d = np.random.randn(30)

fig = plt.figure()
ax1 = fig.add_subplot(2, 2, 1)
ax2 = fig.add_subplot(2, 2, 2)
ax3 = fig.add_subplot(2, 2, 3)
ax4 = fig.add_subplot(2, 2, 4)

A, = ax1.plot(a, "r--o")
ax1.legend([A], ["A"])
B, = ax2.plot(b, "b-*")
ax2.legend([B], ["B"])
C, = ax3.plot(c, "g-.+")
ax3.legend([C], ["C"])
D, = ax4.plot(d, "m:x")
ax4.legend([D], ["D"])

运行后输出如下:
在这里插入图片描述
在绘制子图时,我们首先需要通过fig = plt.figure()定义一个实例,然后通过fig.add_subplot方法向fig实例中添加我们需要的子图。在代码中传递给fig.add-subplot方法的参数是1组数字,以第1组数字(2, 2, 1)来说,前两个数字表示把整块图划分成了两行两列,一共4张子图,最后1个数字表示具体使用哪一张子图进行绘制,除了绘制线型图,利用Matplotlib强大的绘图功能还可以绘制散点图、直方图、饼图等。

b. 散点图

import matplotlib.pyplot as plt
import numpy as np
%matplotlib inline

np.random.seed(42)
x = np.random.randn(30)
y = np.random.randn(30)

plt.scatter(x,y,c="g", marker="o", label="(X,Y)")
plt.title("Example")
plt.xlabel("X")
plt.ylabel("Y")
plt.legend(loc=1)
plt.show()

运行后输出:
在这里插入图片描述
绘制散点图的核心代码是plt.scatter(x,y,c=“g”, marker=“o”, label="(X,Y)",其中有三个需要留意的参数。

  1. “c”:指定散点图绘制的参数点使用哪种颜色,颜色参数可参考绘制线型图时对线条颜色选择的参数范围。
  2. “marker":指定散点图中绘制的参数点使用哪种形状,和之前线型图中的设置一样,这里使用"o"表示设置为圆形。
  3. “label”:指定在散点图中绘制的参数点使用的图例,与线型图中的图例不同。
  4. 还可以通过plt.legend(loc=1)对图例的位置进行强制设定,对图例位置的参数设置一般有以下几种。
    “loc=0”: 图例使用最好的位置
    “loc=1”: 强制图例使用图中右上角的位置
    “loc=2”: 强制图例使用图中左上角的位置
    “loc=3”: 强制图例使用图中右下角的位置
    “loc=4”: 强制图例使用图中右上角的位置

c. 直方图

import matplotlib.pyplot as plt
import numpy as np
%matplotlib inline

np.random.seed(42)
x = np.random.randn(1000)
plt.hist(x, bins=20,color="g") # b用于指定直方图条纹数
plt.title("Example")
plt.xlabel("X")
plt.ylabel("Y")
plt.show()

运行后输出:
在这里插入图片描述
绘制直方图的核心代码是plt.hist(x,bins=20,color=“g”),其中color的功能和散点图中的c一样,bins用于指定绘制的直方图条纹的数量。

d. 饼图

import matplotlib.pyplot as plt

labels = ['Dogs', 'Cats', 'Birds']
sizes = [15, 50, 35]

plt.pie(sizes, explode=(0.1, 0, 0), labels=labels, autopct='%1.1f%%', startangle=0) # explode表示数据系列之间的间隔,autopct将sizes中的数据变为浮点,startangle是绘制第1块饼图时该饼图与X轴正方向的夹角度数。
plt.axis('equal') # 用于使x轴和y轴的刻度保持一致。
plt.show()

运行后输出:
在这里插入图片描述
绘制饼图的核心代码为plt.pie(sizes, explode=(0, 0, 0.1), labels=labels, autopct=’%1.1f%%’,startangle=60),其中sizes=[15,50,35]的三个数字确定了每部分数据系列在整个圆形的占比;explode定义每部分数据系列之间的间隔,如果设置两个0和一个0.1,就能突出第3部分;autopct其实就是将sizes中的数据以所定义的浮点精度进行显示;startangle是绘制第1块饼图时该饼图与X轴正方向的夹角度数,这里设置为90,默认为0;plt.axis(‘equal’)是必不可少的,用于使X轴和Y轴的刻度保持一致,只有这样,最后得到饼图才是圆形的。

参考:《深度学习之PyTorch实战计算机视觉》

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值