matplotlib-绘制精美的图标 第一节 快速绘图(I)

声明:内容全部来自《Python科学计算》(张若愚),仅供学习记录使用。如有兴趣,请尊重知识,购买正版。

Github 链接


使用pyplot模块绘图

matplotlib的pyplot模块提供了与MATLAB类似的绘图函数调用接口,方便用户快速绘制二维图表。

# -*- coding: utf-8 -*-
"""
@author: xusworld
@file: FirstExample.py
@time: 2017-05-06 09:37

"""

import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 10,1000)
y = np.sin(x)
z = np.cos(x**2)

plt.figure(figsize=(8,4))

plt.plot(x,y, label="$sin(x)$", color="red", linewidth=2)
plt.plot(x,z,"b--", label="$cos(x^2)$")

plt.xlabel("Times(s)")
plt.ylabel("Volt")
plt.title("PyPlot First Example")
plt.ylim(-1.2, 1.2)
plt.legend()

plt.show()




不得不说,python的库十分强大,短短几行代码就能做出来这么精致的图。
不过其中的很多内容对新手当然包括我自己来说都很陌生,下面就一行一行解释一下。

plt.figure(figsize=(8,4))



其他的参数仅仅了解一下,这行代码只设置了 figsize 参数.由于参数num为设定,所以调用figure()创建一个Figure()对象,并且让他成为当前Figure对象。
figsize参数指定Figure对象的宽度和高度,单位为英寸。


plt.plot(x,y, label="$sin(x)$", color="red", linewidth=2)

 
  
plot传送门
创建Figure对象之后,接下来调用plot()在当前的Figure对象中绘图。实际上plot()实在Axes(子图)对象上绘图,如果当前的Figure对象中没有Axes对象,将会位置
创建一个几乎充满整个图表的Axes对象,并且使此Axes对象成为当前的Axes对象。plot()的前两个参数是分别表示X,Y轴数据的对象,这里使用的是NumPy数组。

  • label: 给曲线指定一个标签,此标签将在图示中显示。如果标签字符串的前后有字符‘$’,matplotlib会使用内嵌的LaTeX引擎将其显示为数学公式。
  • color: 指定曲线的颜色。(上面的传送门中有相关的解释)
  • linewidth: 指定曲线的宽度,可以不是整数,也可以使用缩写形式的参数名lw。


plt.plot(x,z,"b--", label="$cos(x^2)$")
直接通参数"b--"指定曲线的颜色和线型。(仔细查看传送门中的内容)


plt.xlabel("Times(s)")
plt.ylabel("Volt")
分别设置 X轴,Y轴的标题文字

plt.title("PyPlot First Example")
设置子图标题

plt.ylim(-1.2, 1.2)
xlim, ylim:分别设置X,Y的显示范围

plt.legend()
显示图示,即图中表示每条曲线的标签(label)和样式的矩形区域。

plt.show()
显示绘图窗口


面向对象方式绘图

matplotlib实际上是一套面向对象的绘图库,它所绘制的图表中的每个绘图元素,例如线条,文字,刻度等在内存中都有一个对象与之对应。pyplot模块虽然用法简单,但
并不适合在较大的应用程序中使用,因此这里介绍如何使用matplotlib的面向对象的方式编写绘图程序。

为了将面向对象的绘图库包装成只使用函数的API,pyplot模块的内部保存了当前图表以及当前子图等信息。可以使用gcf()和gca()获得这两个对象,它们分别是
"Get Current Figure"和"Get Current Axes"开头字母的缩写。gcf()获得的是表示图表的Figure对象,而gca()获得的则是表示子图的Axes对象。

figure = plt.gcf()
axes = plt.gca()
print(figure)
print(axes)

Output
Figure(640x480)
Axes(0.125,0.11;0.775x0.77)


 
  
 
 


猜你喜欢

转载自blog.csdn.net/u012706792/article/details/71249232