Python绘图简明教程

前言

本文纯科普向。

主要介绍一下Python上最好用的2D图形绘制库matplotlib的安装以及一些基础操作。

选择Python是因为其强大的第三方库和优秀便捷的语法,并且能方便地对数据进行后续处理和分析。

或许对各位的实验报告有一定帮助...嘻嘻。

一份简短的安装说明

1. 安装Python3

进入python.org/downloads/

下载安装包(注意区分32位和64位)

以Windows为例,安装时记住安装目录

建议勾选Add to path

安装完成后close

2. 安装matplotlib

Mac OS 打开终端,Windows 打开命令提示符,输入如下命令:

$pip3 install matplotlib

等候安装完成

3. 安装NumPy

方法同上

$pip3 install numpy

简介:NumPy是一个为了在Python上进行快速多维矩阵运算而编写的库(Python作为一门动态语言其本身效率低下)NumPy可以创建多维数组并且实现像MATLAB一样方便的矩阵拼接和运算。

4. 开发环境

本人强推Sublime Text。

习惯Visual Studio的同学可以使用VS Code。

Pycharm也是不错的选择。

此外还有著名的Anaconda,集成了许多强大的科学分析工具。

下面是一些配置方面的文章

VS code:

https://www.cnblogs.com/bloglkl/p/5797805.html

ST3:

https://www.zhihu.com/question/22904994

Anaconda:

https://www.zhihu.com/question/58033789

如果不需要配置开发环境,也可以选择使用

Python自带的IDLE编辑

在File中新建文件并保存,后缀为.py

编辑一段python代码,保存后Run或者直接F5

如果没有bug就能成功运行了

正文

对于完全没学过Python的同学,建议先了解一下基本的语法和数据类型。

这里有一篇教程

https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000

当然,最为可靠的教程自然是Python的官方文档

https://docs.python.org/3/

顺便附上matplotlib的文档

https://matplotlib.org/users/index.html

以及NumPy的官方教程

https://docs.scipy.org/doc/numpy-dev/user/quickstart.html

接下来我们实现一些基本的操作

首先要导入刚安装好的两个模块:matplotlib和NumPy,为了方便,我们可以使用plt和np作为别名

以下的代码绘制了一幅正余弦函数的图像

Python弱类型,因此不需要提前声明变量类型。

第一行中np.linspace()为NumPy的一个成员函数,接受起点,终点和元素个数三个未知参数,返回一个由等差数列构成的一维数组,将其赋值给变量x,作为坐标点的x轴坐标。

第二行我们通过成员函数sin,cos获得了相应的y轴坐标,他们的变量类型仍然是NumPy的一维数组。

然后通过函数np.plot()我们就可以得到一幅不带标注的简单图形。不要忘记用plt.show()显示图像。

当然也可以通过修改plot()的参数来定制图像

常见参数如color,linewidth,linestyle

示例:

plt.plot(x,y,color='red',linewidth=2.5,linestyle='--')

参数太多不一一列举

附上官方说明:http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.plot

绘制多条曲线时默认在一张图上显示,若要用多张图像分别显示,可以用subplot()函数。

标签和坐标轴的设置

先附上实例:

1. plt.xlabel()和plt.ylabel()函数接受一个字符串参数,给x,y轴加上标签,可以用来显示单位。

2. plt.title()函数同样接受一个字符串给图像加上标题

3. plt.xlim()和plt.ylim()都接受两个参数,用来设定图像的边界。如果不调用此函数则图像边界为自适应。

4. plt.xticks()和plt.yticks()来给坐标轴上的某个点设置标签。ticks函数接受两个长度相同的列表作为参数。第一个列表记录了要修改的点在坐标轴上的位置,第二个列表记录的是要替换的内容组成的字符串。举个例子,plt.xticks([1, 2, 3], ['a', 'b', 'c'])将x轴上坐标为1,2,3的格点分别换上了标签‘a’,‘b’,‘c’。

5. plot()函数内有一个名为label的关键字参数,接受一个字符串,可以在绘制一条曲线时显示它的标签。和plt.legend()配套使用。legend()函数有一个名为loc的参数,能够指定标签显示的位置。

6. 值得注意的是,matplotlib支持基本的LaTeX格式。成员函数在接受字符串参数时可以用如下格式:

其中,字符串前以r开头说明使用LaTeX格式,字符串内$与LaTeX中行间公式的环境相同,可以由此来编辑数学公式。

一些其他图形的绘制

引用一下官方示例,不做深入讲解

其中分别演示了基本的柱状图、散点图和折线图的绘制。

后记

再次强调,本文纯科普向,仅仅演示了一些最基本的函数使用方法。Python是一门非常有魅力的编程语言,其内容也远远不止于此,只希望能借此抛砖引玉,对大家的学习有所帮助。

最后引用一下Python之禅。

Beautiful is better than ugly.

Explicit is better than implicit.

Simple is better than complex.

Complex is better than complicated.

Flat is better than nested.

Sparse is better than dense.

Readability counts.

Special cases aren't special enough to break the rules.

Although practicality beats purity.

Errors should never pass silently.

Unless explicitly silenced.

In the face of ambiguity, refuse the temptation to guess.

There should be one-- and preferably only one --obvious way to do it.

Although that way may not be obvious at first unless you're Dutch.

Now is better than never.

Although never is often better than *right* now.

If the implementation is hard to explain, it's a bad idea.

If the implementation is easy to explain, it may be a good idea.

Namespaces are one honking great idea -- let's do more of those!

祝大家学习愉快。_(:⁍」∠)_

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180318G1CYEA00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励