python图表 导出pdf_Python中使用matplotlib绘制图表.pdf

本文介绍了Python的matplotlib库,它是用于图表绘制的强大工具,具有类似matlab的API,支持交互式绘图和高质量图表。matplotlib.pyplot模块提供了快速绘图接口,而面向对象的绘图方式允许对图表的每个元素进行详细控制。此外,通过修改matplotlibrc配置文件,可以自定义图表样式。文章还讲解了如何使用subplot创建多子图以及配置图表属性。
摘要由CSDN通过智能技术生成

官方示范: 可以在这里查询图列和代码 : /gallery.html#

Python图表绘制:matplotlib绘图库入门

matplotlib 是 python 最著名的绘图库,它提供了一整套和 matlab 相似的命令 API,十分适

合交互式地行制图。而且也可以方便地将它作为绘图控件,嵌入 GUI 应用程序中。

它的文档相当完备,并且 Gallery 页面中有上百幅缩略图,打开之后都有源程序。因此如果你

需要绘制某种类型的图,只需要在这个页面中浏览/复制/粘贴一下,基本上都能搞定。

在 Linux 下比较著名的数据图工具还有 gnuplot,这个是免费的,Python 有一个包可以调用

gnuplot,但是语法比较不习惯,而且画图质量不高。

而 Matplotlib则比较强:Matlab的语法、python语言、latex的画图质量(还可以使用内嵌的

latex引擎绘制的数学公式)。

Matplotlib.pyplot 快速绘图

快速绘图和面向对象方式绘图

matplotlib 实际上是一套面向对象的绘图库,它所绘制的图表中的每个绘图元素,例如线条

Line2D、文字Text、刻度等在内存中都有一个对象与之对应。

为了方便快速绘图 matplotlib 通过 pyplot 模块提供了一套和 MATLAB 类似的绘图 API,将众

多绘图对象所构成的复杂结构隐藏在这套 API 内部。我们只需要调用 pyplot 模块所提供的函数

就可以实现快速绘图以及设置图表的各种细节。pyplot 模块虽然用法简单,但不适合在较大的

应用程序中使用。

为了将面向对象的绘图库包装成只使用函数的调用接口,pyplot 模块的内部保存了当前图表以

及当前子图等信息。当前的图表和子图可以使用 plt.gcf()和 plt.gca()获得,分别表示"Get

Current Figure"和"Get Current Axes"。在 pyplot 模块中,许多函数都是对当前的 Figure

或 Axes 对象进行处理,比如说:

plt.plot()实际上会通过plt.gca()获得当前的Axes 对象ax,然后再调用ax.plot()

方法实现真正的绘图。

可以在 Ipython 中输入类似"plt.plot??"的命令查看 pyplot 模块的函数是如何对各种绘图对象

进行包装的。

配置属性

matplotlib 所绘制的图表的每个组成部分都和一个对象对应,我们可以通过调用这些对象的属

性设置方法 set_*()或者 pyplot 模块的属性设置函数 setp()设置它们的属性值。

因为 matplotlib 实际上是一套面向对象的绘图库,因此也可以直接获取对象的属性

配置文件

绘制一幅图需要对许多对象的属性进行配置,例如颜色、字体、线型等等。我们在绘图时,并没

有逐一对这些属性进行配置,许多都直接采用了 matplotlib 的缺省配置。

matplotlib 将这些缺省配置保存在一个名为“matplotlibrc” 的配置文件中,通过修改配置文件,

我们可以修改图表的缺省样式。配置文件的读入可以使用 rc_params(),它返回一个配置字典;

在 matplotlib 模块载入时会调用 rc_params(),并把得到的配置字典保存到 rcParams 变量

中;matplotlib 将使用 rcParams 字典中的配置进行绘图;用户可以直接修改此字典中的配置,

所做的改变会反映到此后创建的绘图元素。

绘制多子图 (快速绘图)

Matplotlib 里的常用类的包含关系为 Figure -> Axes -> (Line2D, Text, etc.)一个

Figure 对象可以包含多个子图(Axes),在 matplotlib 中用Axes 对象表示一个绘图区域,可

以理解为子图。

可以使用 subplot()快速绘制包含多个子图的图表,它的调用形式如下:

subplot(numRows, numCols, plotNum)

subplot 将整个绘图区域等分为 numRows 行* numCols 列个子区域,然后按照从左到右,从

上到下的顺序对每个子区域进行编号,左上的子区域的编号为 1。如果 numRows,numCols

和 plotNum 这三个数都小于 10 的话,可以把它们缩写为一个整数,例如 subplot(323)和

subplot(3

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值