matplotlib----绘制精美的图表

matplotlib是python最著名的绘图库,它提供了一整套和matlab相似的命令API,十分适合交互式地进行制图。而且也可以方便地将它作为绘图控件,嵌入GUI应用程序中。

1. 快速绘图

matplotlib的pyplot子库提供了和matlab类似的绘图API,方便用户快速绘制2D图表。让我们先来看一个简单的例子,程序如下:

# -*- coding: utf-8 -*-
import numpy as np    #导入函数库
import matplotlib.pyplot as plt

x = np.linspace(0, 10, 1000)   #创建数组
y = np.sin(x)
z = np.cos(x**2)

plt.figure(figsize=(8,4))  #调用figure创建绘画图像
#调用plot函数,指定曲线名字、颜色、曲线宽度
plt.plot(x,y,label="$sin(x)$",color="red",linewidth=2)
plt.plot(x,z,"b--",label="$cos(x^2)$")
plt.xlabel("Time(s)")  #设置x轴文字
plt.ylabel("Volt")  #设置y轴文字
plt.title("PyPlot First Example")  #设置图标标题
plt.ylim(-1.2,1.2)  #设置y轴范围
plt.legend()  #显示图示
plt.show()  #显示创建的所有绘图对象

将程序保存为pyplot.py文件,运行结果如下:
这里写图片描述
这里写图片描述

2. 绘制多轴图

一个绘图对象(figure)可以包含多个轴(axis),在Matplotlib中用轴表示一个绘图区域,可以将其理解为子图。上面的第一个例子中,绘图对象只包括一个轴,因此只显示了一个轴(子图)。我们可以使用subplot函数快速绘制有多个轴的图表。subplot函数的调用形式如下:

subplot(numRows, numCols, plotNum)

subplot将整个绘图区域等分为numRows行 * numCols列个子区域,然后按照从左到右,从上到下的顺序对每个子区域进行编号,左上的子区域的编号为1。subplot在plotNum指定的区域中创建一个轴对象。如果新创建的轴和之前创建的轴重叠的话,之前的轴将被删除。

下面的程序创建3行2列共6个轴,通过axisbg参数给每个轴设置不同的背景颜色。

for idx, color in enumerate("rgbyck"):
    plt.subplot(320+idx+1, axisbg=color)
plt.show()

结果如下:
这里写图片描述

如果希望某个轴占据整个行或者列的话,可以如下调用subplot:

plt.subplot(221) # 第一行的左图
plt.subplot(222) # 第一行的右图
plt.subplot(212) # 第二整行
plt.show()

结果如下:
这里写图片描述

当绘图对象中有多个轴的时候,可以通过工具栏中的Configure Subplots按钮,交互式地调节轴之间的间距和轴与边框之间的距离。如果希望在程序中调节的话,可以调用subplots_adjust函数,它有left, right, bottom, top, wspace, hspace等几个关键字参数,这些参数的值都是0到1之间的小数,它们是以绘图区域的宽高为1进行正规化之后的坐标或者长度。

猜你喜欢

转载自blog.csdn.net/mingzhuo_126/article/details/81295113