简述

Matplotlib是一个基于python的2D画图库,能够用python脚本方便的画出折线图,直方图,功率谱图,散点图等常用图表,而且语法简单。具体介绍见matplot官网。

Numpy(Numeric Python)是一个模仿matlab的对python数值运算进行的扩展,提供了许多高级的数值编程工具,如:矩阵数据类型、矢量处理,以及精密的运算库。专为进行严格的数字处理而产生,而且据说自从他出现了以后,NASA就把很多原来用fortran和matlab做的工作交给了numpy来做了,可见其强大。。。他的官网在这里,具体的资料都在里面。

安装

(牛力大法好~)

使用

matplotlib可以在脚本中使用,不过如果在ipython中使用则会更加炫(直接添加–pylab参数可以免去导包的过程),而且能得到类似Matlab/Mathematica一样的功能,即时输入,即时输出。个人觉得说白了他就是模仿Matlab/Mathematica的,但是的确比前者更加方便编程。

很多情况下matplot需要配合numpy包一起用,关于numpy包我不打算分开来说,用到的时候提一下就行。有一点需要注意的是,numpy包通常是这样导入的:

会给他起一个叫np的别名,而且这几乎已经是约定俗成了。

在python或者ipython中输入help(*需要查找的函数*) 就行(当然需要先导入下包)。

第一个图像

需要导入的包:

第一个函数图像

有matlab基础的同学肯定不陌生。。。是的,这两个模块的组合几乎就跟matlab的用法无二。。

1、首先用np.linspace方法生成一个数组X,这个数组是从$-\pi$开始到$\pi$的总共包含256个元素的数组,endpoint参数表示是否包含首尾端点(他的值是True或False,首字母要大写。。。。)。当然,这个数组就是一个普通的数组了,跟其他数组没有区别。

2、然后用np.cos()和np.sin()方法作用在X数组上,对于X中的每一个元素进行计算,生成结果数组。(免去了迭代的过程)。

3、接着调用pylab的plot方法,第一个参数是横坐标数组,第二个参数是纵坐标数组,其他参数暂且不谈。这样他会生成一个默认的图表了。(不会立刻显示)

4、当然,最后还要调用show方法来显示图表。

5、结果:

图表的名字叫figure1,左下面有几个按钮,都是很实用的东西,右下角会显示当前鼠标左边,也很方便。

图表布局和坐标分布

每一个图表都是在一个figure里面,我们可以通过如下命令生成一个空的figure:

这里参数的顺序没有要求,但是一定要加上参数名,因为他是根据参数名来区别每个参数的,是一种跟C语言类型不同的函数。figsize参数表示figure的宽高比,然后dpi表示每一份占的长度,比如这里就表示图像是640x480的。

输出命令之后会立刻出现一个窗口,接下来所有的plot命令都会立刻显示在这个窗口上而不用再输入show命令了。

一个figure里也能显示多个图表,我们可以用如下函数来分割一个figure:

这样就会把当前的figure分割成3行4列的表,而激活其中的第6张,即第2行第3张。以后的plot都是在这一个子表上生成的,如果需要更换则可以重新输入subplot命令来确定其新的位置。

除此之外,如果我们对图表显示的范围不满意,我们还可以直接调整图表的坐标范围:

这就表示x轴的范围设置在-4到4,y轴的范围设置在-1到1。当然,如果是想相对的进行修改我们可以利用下numpy数组的min和max方法。比如X.min()这样的东西。

如果对坐标显示的密度啊什么的不满意,我们也可以调节他的标注点:

对于xticks和yticks,我们实际上可以传入任意的数组,这里不过是为了方便而用numpy快速生成的等差数列。

当然,我们也可以给标注点进行任意的命名,像下面这样:

效果也很好想象,就不贴图了。需要注意的是这里也可以支持LaTex语法,将LaTex引用在两个$之间就可以了。(关于LaTex)

这里也有个小窍门,就是如果想不显示标注的话,我们就可以直接给xticks赋一个空的数组。

更改色彩和线宽

我们可以在画plot的时候用如下方法指定他的颜色和线宽:

同样,这里参数的顺序不重要,名字才重要。

color参数可以指定RGB的色相,也可以用一些默认的名字,比如red blue之类的。

linestyle参数则指定了线的样式,具体参照以下样式:

参数样式

‘-‘

实线

‘–'

虚线

‘-.'

线-点

‘:'

点虚线

linewidth参数指定折线的宽度,是个浮点数。

marker参数指定散点的样式,具体参照以下样式:

参数样式

‘.'

实心点

‘o'

圆圈

‘,'

一个像素点

‘x'

叉号

‘+'

十字

‘*'

星号

‘^' ‘v' ‘'

三角形(上下左右)

‘1' ‘2' ‘3' ‘4'

三叉号(上下左右)

markerfacecolor参数指定marker的颜色

markersize参数指定marker的大小

这样就基本上能够自定义任何的折线图、散点图的样式了。

移动轴线

这段有点小复杂,暂时不想具体了解奇奇怪怪的函数调用,姑且先记录下用法和原理:

我们知道一张图有上下左右四个轴线,这里我们把右边和上边的轴线颜色调为透明,然后把下边设置到y轴数据为0的地方,把左边设置到x轴数据为0的地方。这样我们就能根据自己想要位置来调节轴线了。

比如下面这段官方的代码:

显示的结果就是:

图例和注解

图例十分简单,下述代码就可以解决:

在plot里指定label属性就好了,最后调用下legend函数来确定图例的位置,一般就是'upper left'就好了。

注解就有点麻烦了,要用到annotate命令,挺复杂的,暂时是在不想看,姑且贴一段完整的代码和效果图吧:

效果图:

还是十分高能的。。。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家学习或者使用python能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

python中numpy matplotlib绘图教程_利用numpy+matplotlib绘图的基本操作教程相关推荐

  1. python中griddata的外插值_利用griddata进行二维插值

    有时候会碰到这种情况: 实际问题可以抽象为 \(z = f(x, y)\) 的形式,而你只知道有限的点 \((x_i,y_i,z_i)\),你又需要局部的全数据,这时你就需要插值,一维的插值方法网上很 ...

  2. python中θ符号怎么打出来_利用python打印特殊符号

    原博文 2020-05-02 19:57 − 1.方法一,调用字符映射表输入特殊符号 在键盘上按win+R,在打开的对话框中输入"charmap",会出现字符映射表: 2.利用字符 ...

  3. python中关于命名的例子_利用Python批量重命名文件(给非技术人员的Python实例参考)...

    Python是一门"优雅"的计算机语言,而且就算10岁的小朋友也能学会,我一直向我身边的同学朋友同事推荐,不管他会不会编程. 这一回我需要完成的任务是把"照片" ...

  4. python数组和函数的区别_真假美猴王-Numpy数据与Python数组的区别与联系!

    Numpy,是python中的一个矩阵计算包,功能类似matlab的矩阵计算.Numpy的诞生弥补了下面提到的两项的不足,numpy提供了两种基本的对象:ndarray(N-dimensional a ...

  5. python中五种下划线 _

    python中五种下划线 "_" 单前导下划线:_var 单末尾下划线:var_ 双前导下划线:__var 双前导和末尾下划线:var 单下划线:_ 在文章结尾处,你可以找到一个简 ...

  6. ZBrush教程_次时代作品“行尸矿工”制作教程

    ZBrush教程_次时代作品"行尸矿工"制作教程 链接:https://pan.baidu.com/s/12BcANjJC_Q8SLgqTf2dyjw 密码:hd0c 这是在我工作 ...

  7. python画图将标题中有变量_如何在matplotlib中打印变量名作为标题

    在python中不可能轻松地获取变量的名称(请参见answer).对于在python中传递给函数的变量,有使用inspect.详细信息here和基于此answer的案例解决方案的复杂解决方案impor ...

  8. python中mod是什么意思_【python中,mod_python到底做了些什么呢?】mod python 教程

    python 编程小白 ,不会用doctest 请大神指教怎么用!! >>> >>> def is_between(v, lower, higher): ...   ...

  9. python 3d绘图旋转_如何更改Matplotlib 3d旋转(mplot3d)的鼠标交互样式?

    我绘制了3D图,并用于quiver绘制x,y和z轴. 在matplotlib的交互式绘图中,我可以拖动和旋转3D绘图,但是存在一个问题: 当我拖动绘图时,似乎Z轴限制在一个平面上.无论我如何拖动绘图, ...

最新文章

  1. 2019年度苏州之春摄影作品展
  2. C# 对象名无效 问题
  3. 通过投影增强数据模型
  4. mysql-安装报错计算机中丢失MSVCR100.dll文件丢失
  5. 7-1 最长连续递增子序列 (20 分)
  6. 小米发布2021年第二季度财报:小米手机二季度平均售价1116.7元
  7. 【Spark工作原理】Spark任务调度理解
  8. 油猴脚本管理器的超详细下载安装使用教程—— 个性化浏览器
  9. 【IOS捷径】获取时间戳
  10. 常用的 T-SQL 语言
  11. WMS软件国内主要供应商分析
  12. 一个amp;quot;现象级amp;quot;大数据公司的蜕变
  13. 如何捕获电脑病毒样本
  14. glassfish插件_可扩展GlassFish v3的JavaEE 6平台
  15. Pyspark特征工程--RFormula
  16. SmartGit功能介绍
  17. the sun also rises day17
  18. 理解Java heap内存和Java direct内存
  19. Git、Github和GitLab的区别及与SVN的比较
  20. 《Java工程师修炼之道》学习笔记

热门文章

  1. 5 加盐_软化水设备怎么加盐
  2. c语言全排列库函数,几种全排列的算法(C语言实现)
  3. 21天jmeter打卡day5-完成对www.baidu.com的两条接口测试
  4. 聊聊 Jmeter 如何并发执行 Python 脚本
  5. 帧差法matlab代码_【游戏流体力学基础及Unity代码(一)】热传导方程
  6. springboot 讯飞语音_讯飞智能语音鼠标实际体验感受
  7. javaee怎么做到只有登录才可以进网页_java初学者,应该怎么去学习?(建议收藏)...
  8. linux tcp传输变慢,linux下建立tcp连接(connect)非常慢的问题的排查
  9. php libswf,PHP停解析swf文件头
  10. Java电话号码滚动抽奖_js手机号码批量滚动抽奖代码实现