iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >利用numpy+matplotlib绘图的基本操作教程
  • 796
分享到

利用numpy+matplotlib绘图的基本操作教程

操作教程numpy 2022-06-04 18:06:45 796人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

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

简述

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

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

安装


$sudo apt-get install python-matplotlib
$sudo apt-get install python-numpy

(牛力大法好~)

使用

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

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


import numpy as np

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

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

第一个图像

需要导入的包:


import numpy as np
from pylab import *

第一个函数图像


X = np.linspace(-np.pi, np.pi, 256,endpoint=True)
C,S = np.cos(X), np.sin(X)
plot(X,C)
plot(X,S)
show()

有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:


figure(figsize=(8,6), dpi=80)

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

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

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


subplot(3,4,6)

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

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


xlim(-4.0,4.0)
ylim(-1.0,1.0)

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

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


xticks(np.linspace(-4,4,9,endpoint=True))
yticks(np.linspace(-1,1,5,endpoint=True))

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

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


xticks([1,2,3,4,5],['one','two','three','four','five'])

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

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

更改色彩和线宽

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


plot(X, C, color='#cadae3', linestyle='-',linewidth=1.3, marker='o', markerfacecolor='blue', markersize=12,)

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

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

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

参数 样式 ‘-‘ 实线 ‘?' 虚线 ‘-.' 线-点 ‘:' 点虚线

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

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

参数 样式 ‘.' 实心点 ‘o' 圆圈 ‘,' 一个像素点 ‘x' 叉号 ‘+' 十字 ‘*' 星号 ‘^' ‘v' ‘<' ‘>' 三角形(上下左右) ‘1' ‘2' ‘3' ‘4' 三叉号(上下左右)

markerfacecolor参数指定marker的颜色

markersize参数指定marker的大小

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

移动轴线

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


ax = GCa()
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.spines['bottom'].set_position(('data',0))
ax.yaxis.set_ticks_position('left')
ax.spines['left'].set_position(('data',0))

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

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


# -----------------------------------------------------------------------------
# Copyright (c) 2015, Nicolas P. Rougier. All Rights Reserved.
# Distributed under the (new) BSD License. See LICENSE.txt for more info.
# -----------------------------------------------------------------------------
import numpy as np
import matplotlib.pyplot as plt
plt.figure(figsize=(8,5), dpi=80)
ax = plt.subplot(111)
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.spines['bottom'].set_position(('data',0))
ax.yaxis.set_ticks_position('left')
ax.spines['left'].set_position(('data',0))
X = np.linspace(-np.pi, np.pi, 256,endpoint=True)
C,S = np.cos(X), np.sin(X)
plt.plot(X, C, color="blue", linewidth=2.5, linestyle="-")
plt.plot(X, S, color="red", linewidth=2.5, linestyle="-")
plt.xlim(X.min()*1.1, X.max()*1.1)
plt.xticks([-np.pi, -np.pi/2, 0, np.pi/2, np.pi],
 [r'$-pi$', r'$-pi/2$', r'$0$', r'$+pi/2$', r'$+pi$'])
plt.ylim(C.min()*1.1,C.max()*1.1)
plt.yticks([-1, 0, +1],
 [r'$-1$', r'$0$', r'$+1$'])
plt.show()

显示的结果就是:

查看图片

图例和注解

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


plot(X, C, color="blue", linewidth=2.5, linestyle="-", label="cosine")
plot(X, S, color="red", linewidth=2.5, linestyle="-", label="sine")
legend(loc='upper left')

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

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


# -----------------------------------------------------------------------------
# Copyright (c) 2015, Nicolas P. Rougier. All Rights Reserved.
# Distributed under the (new) BSD License. See LICENSE.txt for more info.
# -----------------------------------------------------------------------------
import numpy as np
import matplotlib.pyplot as plt
plt.figure(figsize=(8,5), dpi=80)
ax = plt.subplot(111)
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.spines['bottom'].set_position(('data',0))
ax.yaxis.set_ticks_position('left')
ax.spines['left'].set_position(('data',0))
X = np.linspace(-np.pi, np.pi, 256,endpoint=True)
C,S = np.cos(X), np.sin(X)
plt.plot(X, C, color="blue", linewidth=2.5, linestyle="-", label="cosine")
plt.plot(X, S, color="red", linewidth=2.5, linestyle="-", label="sine")
plt.xlim(X.min()*1.1, X.max()*1.1)
plt.xticks([-np.pi, -np.pi/2, 0, np.pi/2, np.pi],
  [r'$-pi$', r'$-pi/2$', r'$0$', r'$+pi/2$', r'$+pi$'])
plt.ylim(C.min()*1.1,C.max()*1.1)
plt.yticks([-1, +1],
  [r'$-1$', r'$+1$'])
t = 2*np.pi/3
plt.plot([t,t],[0,np.cos(t)],
  color ='blue', linewidth=1.5, linestyle="--")
plt.scatter([t,],[np.cos(t),], 50, color ='blue')
plt.annotate(r'$sin(frac{2pi}{3})=frac{sqrt{3}}{2}$',
  xy=(t, np.sin(t)), xycoords='data',
  xytext=(+10, +30), textcoords='offset points', fontsize=16,
  arrowprops=dict(arrowstyle="->", connectionstyle="arc3,rad=.2"))
plt.plot([t,t],[0,np.sin(t)],
  color ='red', linewidth=1.5, linestyle="--")
plt.scatter([t,],[np.sin(t),], 50, color ='red')
plt.annotate(r'$cos(frac{2pi}{3})=-frac{1}{2}$',
  xy=(t, np.cos(t)), xycoords='data',
  xytext=(-90, -50), textcoords='offset points', fontsize=16,
  arrowprops=dict(arrowstyle="->", connectionstyle="arc3,rad=.2"))
plt.legend(loc='upper left', frameon=False)
plt.savefig("../figures/exercice_9.png",dpi=72)
plt.show()

效果图:

查看图片

还是十分高能的。。。

总结

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

--结束END--

本文标题: 利用numpy+matplotlib绘图的基本操作教程

本文链接: https://www.lsjlt.com/news/13338.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • matplotlib基本图形绘制操作实例
    目录matplotlib1.折线图2.散点图3.条形图4.直方图matplotlib matplotlib是最流行的python底层绘图库,接下来就由小编为大家介绍一些关于matpl...
    99+
    2022-12-08
    matplotlib 图形绘制 matplotlib 绘图
  • python之matplotlib和pandas绘图的操作
    这篇文章主要介绍python之matplotlib和pandas绘图的操作,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!python可以做什么Python是一种编程语言,内置了许多有效的工具,Python几乎无所不能...
    99+
    2023-06-07
  • Python NumPy教程之数组的基本操作详解
    目录Numpy中的N维数组(ndarray)数组创建数组索引基本操作数据类型Numpy中的N维数组(ndarray) Numpy 中的数组是一个元素表(通常是数字),所有元素类型相同...
    99+
    2024-04-02
  • 教你利用python的matplotlib(pyplot)绘制折线图和柱状图
    目录前言一、折线图二、柱状图总结前言 今天帮师兄赶在deadline之前画论文的图,现学现卖很是刺激,现把使用matplotlib的子库pyplot画折线图和柱状图的代码记录分享一下...
    99+
    2024-04-02
  • MySQL视图简介及基本操作教程
    前言 视图是数据库系统中一种非常有用的数据库对象。MySQL 5.0 之后的版本添加了对视图的支持。 认识视图 视图是一个虚拟表,其内容由查询定义。同真实表一样,视图包含一系列带有名称的列和行数据,但视...
    99+
    2024-04-02
  • 利用Python NumPy库及Matplotlib库绘制数学函数图像
    目录前言NumPy与Matplotlib函数绘图所需库函数语法导入所需模块一元一次函数一元二次函数指数函数正弦函数余弦函数高级玩法总结 前言 最近开始学习数学了,有一些题目...
    99+
    2024-04-02
  • 学习matplotlib绘制折线图的基本步骤
    Matplotlib是Python中最著名和最常用的数据可视化库之一。掌握Matplotlib绘制折线图的基本步骤对于数据分析工作非常重要。本文将从零开始,为初学者介绍Matplotlib绘制折线图的基本步骤,并提供具体的代码示...
    99+
    2024-01-17
    绘制 折线图
  • matplotlib绘制直方图的基本配置是什么
    这篇文章主要介绍“matplotlib绘制直方图的基本配置是什么”,在日常操作中,相信很多人在matplotlib绘制直方图的基本配置是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”matplotlib绘...
    99+
    2023-06-30
  • 利用python库matplotlib绘制不同的图表
    目录1、绘制简单曲线图2、绘制单条曲线图3、绘制多条曲线4、绘制直方图5、绘制散点图1、绘制简单曲线图 思路:通过3个坐标点,绘制曲线 import matplotlib.pyplo...
    99+
    2024-04-02
  • AndroidFlutter利用CustomPaint绘制基本图形详解
    目录绘制矩形绘制圆形绘制椭圆绘制任意形状绘制弧形总结上一篇我们介绍了 CustomPaint 的基本概念和使用,可以看到 CustomPaint&nbs...
    99+
    2024-04-02
  • 入门教程:学习使用matplotlib绘制折线图
    简易教程:学会使用Matplotlib绘制折线图 引言:Matplotlib是Python中常用的绘图库之一,可以用于绘制各种类型的图形,包括折线图。折线图是一种常用的数据可视化方式,能够清晰展示数据的变化趋势。本文将通过具体的...
    99+
    2024-01-17
    教程 折线图
  • Python中Numpy和Matplotlib的基本使用指南
    目录1. Jupyter Notebooks2. NumPy 数组3. SciPy 稀疏数组4. Matplotlib总结1. Jupyter Notebooks 作为小白,我现在使...
    99+
    2024-04-02
  • python matplotlib绘图实现删除重复冗余图例的操作
    问题: 由于自己做项目的时候,需要循环的绘制数据,假设有100个样本,每个样本包含两个坐标点(A, B),我需要对这两个点标上不同的颜色,同时还要画出两点间的连线。 显然这个问题中图...
    99+
    2024-04-02
  • 基于python的matplotlib、numpy库实现的图形绘制(数据可视化)
    一、sin,cos函数 1.题目要求 编写程序,绘制正弦曲线和余弦曲线。 提示:利用numpy的linspace()、sin()或cos()函数生成样本数据、正弦或余弦值。 2.函数讲解及代码 import matplotlib....
    99+
    2023-10-06
    python numpy matplotlib
  • Android Flutter利用CustomPaint绘制基本图形的方法
    今天小编给大家分享一下Android Flutter利用CustomPaint绘制基本图形的方法的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获...
    99+
    2023-07-02
  • matplotlib绘制饼图的基本配置(万能模板案例)
    目录饼图的概念 连接数据库绘制饼图案例(pandas画图)显示百分比饼图常见参数扇区分离饼图添加颜色添加阴影显示百分比控制起始角度将饼图放置在坐标轴双饼图显示饼图万能模板饼...
    99+
    2024-04-02
  • python中NumPy的安装与基本操作
    目录Numpy是什么NumPy的安装多维数组创建多维数组多维数组的常用属性多维数组的基本操作数组的算术运算数组的自身运算随机数组索引、切片、迭代总结Numpy是什么 很简单,Nump...
    99+
    2024-04-02
  • python数据分析matplotlib的基础绘图使用
    目录前言(一)什么是matplotlib1.为什么要学习matplotlib2.什么是matplotlib3. 安装matplotlib4.导入matplotlib库(二)matpl...
    99+
    2024-04-02
  • 利用Matlab绘制地图的超详细教程
    目录MappingToolbox工具箱安装局部区域陆地绘制映射贴图纹理贴图线路图绘制usamapaxesm一些地图绘制可用简易函数subplottightmap边框标签网格快速开关函...
    99+
    2024-04-02
  • 如何利用python库matplotlib绘制不同的图表
    这篇文章主要介绍如何利用python库matplotlib绘制不同的图表,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1、绘制简单曲线图思路:通过3个坐标点,绘制曲线import matplotlib.py...
    99+
    2023-06-29
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作