Python 科学计算学习三:matplotlib-绘制精美的图表(1)

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

1 快速绘图

matplotlib中的快速绘图的函数库可以通过如下语句载入:

import matplotlib.pyplot as plt

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)$")#参数''b--``指定曲线的颜色和线型,中b表示蓝色,''--``表示线型为虚线
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()  #显示创建的所有绘图对象

实验结果:
这里写图片描述
matplotlib所绘制的图的每个组成部分都对应有一个对象,我们可以通过调用这些对象的属 性设置方法set_*或者pyplot的属性设置函数setp设置其属性值。例如plot函数返回一个 matplotlib.lines.Line2D 对象的列表,下面的例子显示如何设置Line2D对象的属性:

x = np.arange(0, 5, 0.1)
line, = plt.plot(x, x*x) # plot返回一个列表,通过line,获取其第一个元素 

# 调用Line2D对象的set_*方法设置属性
line.set_antialiased(False)

# 同时绘制sin和cos两条曲线,lines是一个有两个Line2D对象的列表 
lines = plt.plot(x, np.sin(x), x, np.cos(x))

# 调用setp函数同时配置多个Line2D对象的多个属性值 
plt.setp(lines, color="r", linewidth=2.0)

2 绘制多轴图

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

subplot(numRows, numCols, plotNum)

subplot将整个绘图区域等分为numRows行 * numCols列个子区域,然后按照从左到右,从上到下 的顺序对每个子区域进行编号,左上的子区域的编号为1。下面的程序创建3行2列共6个轴,通过axisbg参数给每个轴设置不同的背景颜色。

for idx, color in enumerate("rgbyck"):
    plt.subplot(320+idx+1, facecolor=color)#原来axisbg已经被facecolor替换掉了
plt.show()

实验结果:
这里写图片描述
如果希望某个轴占据整个行或者列的话,可以如下调用subplot:

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

呈现为:
这里写图片描述

3 配置文件

一幅图有许多需要配置的属性,例如颜色、字体、线型等等。我们在绘图时,并没有一一对这些属性 进行配置,许多都直接采用了Matplotlib的缺省配置。Matplotlib将缺省配置保存在一个文件中,通 过更改这个文件,我们可以修改这些属性的缺省值。
通过下面的语句可以获取用户配置路径:

>>> import matplotlib
>>> matplotlib.get_configdir()
'C:\\Users\\juzi\\.matplotlib'

通过下面的语句可以获得目前使用的配置文件的路径:

>>> matplotlib.matplotlib_fname()
'D:\\software\\Anaconda3\\lib\\site-packages\\matplotlib\\mpl-data\\matplotlibrc'

由于在当前路径和用户配置路径中都没有找到位置文件,因此最后使用的是系统配置路径下的配置文 件。如果你将matplotlibrc复制一份到脚本的当前目录下:
这里写图片描述
然后os.getcwd()函数获得当前的路径,复制配置文件之后再通过matplotlib.matplotlib_fname()以获得目前使用的配置文件的路径。
这里写图片描述
如果你用文本编辑器打开此配置文件的话,你会发现它实际上是定义了一个字典。配置文件的读入可以使用 rc_params 函数,它返回一个配置字典:
这里写图片描述
在matplotlib模块载入的时候会调用rc_params:matplotlib.rcParams,并把得到的配置字典保存到rcParams变量中。
matplotlib将使用rcParams中的配置进行绘图。用户可以直接修改此字典中的配置,所做的改变会反 映到此后所绘制的图中。例如下面的脚本所绘制的线将带有圆形的点标识符:

matplotlib.rcParams["lines.marker"] = "o" 
import pylab 
pylab.plot([1,2,3]) 
pylab.show()

这里写图片描述
为了方便配置,可以使用rc函数,下面的例子同时配置点标识符、线宽和颜色:

matplotlib.rc("lines", marker="x", linewidth=2, color="b")
pylab.plot([1,2,3])

这里写图片描述
如果希望恢复到缺省的配置(matplotlib载入时从配置文件读入的配置)的话,可以调用 rcdefaults 函数:

 matplotlib.rcdefaults()

如果手工修改了配置文件,希望重新从配置文件载入最新的配置的话,可以调用:

matplotlib.rcParams.update( matplotlib.rc_params() )

猜你喜欢

转载自blog.csdn.net/Yangchenju/article/details/81319529
今日推荐