Python matplotlib绘制图形实例(包括点,曲线,注释和箭头)


Posted in Python onApril 17, 2020

Python的matplotlib模块绘制图形功能很强大,今天就用pyplot绘制一个简单的图形,图形中包括曲线、曲线上的点、注释和指向点的箭头。

1. 结果预览:

Python matplotlib绘制图形实例(包括点,曲线,注释和箭头)

2. 代码如下:

from matplotlib import pyplot as plt
import numpy as np
 
# 绘制曲线
x = np.linspace(2, 21, 20) # 取闭区间[2, 21]之间的等差数列,列表长度20
y = np.log10(x) + 0.5
plt.figure() # 添加一个窗口。如果只显示一个窗口,可以省略该句。
plt.plot(x, y) # plot在一个figure窗口中添加一个图,绘制曲线,默认颜色
 
# 绘制离散点
plt.plot(x, y, '.y') # 绘制黄色的点,为了和曲线颜色不一样
x0, y0 = 15, np.log10(15) + 0.5
plt.annotate('Interpolation point', xy=(x0, y0), xytext=(x0, y0 - 1), arrowprops=dict(arrowstyle='->')) # 添加注释
for x0, y0 in zip(x, y):
  plt.quiver(x0, y0 - 0.3, 0, 1, color='g', width=0.005) # 绘制箭头
 
x = range(2, 21, 5)
y = np.log10(x) + 0.5
plt.plot(x, y, 'om') # 绘制紫红色的圆形的点
x0, y0 = 7, np.log10(7) + 0.5
plt.annotate('Original point', xy=(x0, y0), xytext=(x0, y0 - 1), arrowprops=dict(arrowstyle='->'))
for x0, y0 in zip(x, y):
  plt.quiver(x0, y0 + 0.3, 0, -1, color='g', width=0.005) # 绘制箭头
 
# 设置坐标范围
plt.xlim(2, 21) # 设置x轴范围
plt.xticks(range(0, 23, 2)) # 设置X轴坐标点的值,为[0, 22]之间的以2为差值的等差数组
plt.ylim(0, 3) # 设置y轴范围
 
# 显示图形
plt.show() # 显示绘制出的图

3. 解析

1)导入matplotlib模块的pyplot类,这里主要用了pyplot里的一些方法。导入numpy用于生成一些数列。分别给pyplot和numpy记个简洁的别名plt和np,方便使用。

2)np.linspace(start, stop, num),可生成闭区间[stop, stop]里的数组长度为num的等差数列。本例子中想作为插值点显示出来。

3)plt.figure()用于添加窗口。如果把所有图形绘制在一个窗口里,该句可以省略,因为figure(1)会被默认创建。

如果想添加窗口,就再添加一句plt.figure(),plt.figure(num)的窗口序号num自动自增。

4)plt.plot()向窗口里绘制曲线,传递x, y参数,分别为横轴和纵轴。

本例中所有图形绘制在一个绘图区域里。如果想添加2个绘图区域呢?如下列代码:

x = np.linspace(2, 21, 20)
y1 = np.log10(x) + 0.5
y2 = np.log10(x) + 1
plt.subplot(211)
plt.plot(x, y1)
 
plt.subplot(212)
plt.plot(x, y2)
plt.show()

plt.subplot(rows, cols, figurenum)添加子绘图区域,参数分别为:把窗口划分为rows行cols列绘图区域,figurenum表示第几个绘图区域。plt.subplot(211)=plt.subplot(2, 1, 1),绘图区域数小于10时可省略逗号。创建的图形为:

Python matplotlib绘制图形实例(包括点,曲线,注释和箭头)

5) plt.plot(x, y, '.y') # 多写该句为了显示点和曲线的颜色不一样。'.y'表示只把绘制曲线的点表示出来,颜色为黄色。

6)plt.annotate(s, xy, xytext) # 添加注释,除s、xy外其余还有若干可选参数。

s:注释文本,

xy:指定要注释的(x,y)坐标点,

xytext:可选,指定要放置文本的(x,y)坐标点。如果没有,则默认为xy注释点。

arrowprops:可选,字典形式,用于在xy坐标和xytext间绘制一个指定形状的箭头,本例中指定一个'->'类型的箭头,箭头头部宽和高为0.2/0.4。

7)plt.quiver(X, Y, U, V, C, **kw) # 绘制一个二维的箭头,X, Y, C可以缺失。

X, Y:箭头的位置,

U, V:表示箭头的方向,

C:设置箭头的颜色,

**kw里还有一系列参数可以设置,包括单位、箭头角度、箭头的头部宽高设置等,这里设置了颜色color和箭头的轴宽度width。

如果设置了C,再设置color将不生效。

有C为啥还有color可选设置呢?疑问暂留,没找到结果。

8)plt.xlim(min, max) / plt.ylim(min, max) 设置x轴/y轴的范围。

9)plt.xticks() 设置x轴坐标点的值。如果plt.xlim和plt.xticks设置的范围不一致,怎么显示?以最后设置的范围为准。

10)plt.show() # 最后调用此句,显示出绘制的图形。

以上这篇Python matplotlib绘制图形实例(包括点,曲线,注释和箭头)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python类继承用法实例分析
Oct 10 Python
Python操作MongoDB数据库PyMongo库使用方法
Apr 27 Python
python使用线程封装的一个简单定时器类实例
May 16 Python
在Python中操作文件之read()方法的使用教程
May 24 Python
详谈Python基础之内置函数和递归
Jun 21 Python
Python 高级专用类方法的实例详解
Sep 11 Python
python+pillow绘制矩阵盖尔圆简单实例
Jan 16 Python
如何安装多版本python python2和python3共存以及pip共存
Sep 18 Python
Python中asyncio与aiohttp入门教程
Oct 16 Python
python中下标和切片的使用方法解析
Aug 27 Python
python利用递归方法实现求集合的幂集
Sep 07 Python
Python爬取豆瓣数据实现过程解析
Oct 27 Python
Python读取excel文件中带公式的值的实现
Apr 17 #Python
在Matplotlib图中插入LaTex公式实例
Apr 17 #Python
python中for in的用法详解
Apr 17 #Python
解决Jupyter无法导入已安装的 module问题
Apr 17 #Python
使用 Python 读取电子表格中的数据实例详解
Apr 17 #Python
jupyter notebook 恢复误删单元格或者历史代码的实现
Apr 17 #Python
jupyternotebook 撤销删除的操作方式
Apr 17 #Python
You might like
Laravel框架表单验证详解
2014/09/04 PHP
php函数serialize()与unserialize()用法实例
2014/11/06 PHP
php写app接口并返回json数据的实例(分享)
2017/05/20 PHP
php实现QQ小程序发送模板消息功能
2019/09/18 PHP
php和html的区别点详细总结
2019/09/24 PHP
JS保存、读取、换行、转Json报错处理方法
2013/06/14 Javascript
JS中产生20位随机数以0-9为例也可以是a-z A-Z
2014/08/01 Javascript
JavaScript中跨域调用Flash的方法
2014/08/11 Javascript
IE7浏览器窗口大小改变事件执行多次bug及IE6/IE7/IE8下resize问题
2015/08/21 Javascript
学习JavaScript设计模式(接口)
2015/11/26 Javascript
json格式数据的添加,删除及排序方法
2016/01/21 Javascript
详解Javascript继承的实现
2016/03/25 Javascript
js实现右键菜单功能
2016/11/28 Javascript
深入探究AngularJs之$scope对象(作用域)
2017/07/20 Javascript
还不懂递归?读完这篇文章保证你会懂
2018/07/29 Javascript
[01:13]这,就是刀塔
2014/07/16 DOTA
[00:30]明星选手化身超级英雄!2018DOTA2亚洲邀请赛全明星赛来临!
2018/04/06 DOTA
[01:10:58]KG vs TNC 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
[01:28]国服启动器接入蒸汽平台操作流程视频
2021/03/11 DOTA
python 自动提交和抓取网页
2009/07/13 Python
python3.3使用tkinter开发猜数字游戏示例
2014/03/14 Python
Python实现动态添加类的属性或成员函数的解决方法
2014/07/16 Python
python批量添加zabbix Screens的两个脚本分享
2017/01/16 Python
python的构建工具setup.py的方法使用示例
2017/10/23 Python
python try except 捕获所有异常的实例
2018/10/18 Python
Python功能点实现:函数级/代码块级计时器
2019/01/02 Python
python 实现return返回多个值
2019/11/19 Python
python DataFrame转dict字典过程详解
2019/12/26 Python
sublime3之内网安装python插件Anaconda的流程
2020/11/10 Python
Pycharm中使用git进行合作开发的教程详解
2020/11/17 Python
很酷的HTML5电子书翻页动画特效
2016/02/25 HTML / CSS
2014年情人节活动方案
2014/02/16 职场文书
大跃进口号
2014/06/16 职场文书
干货!开幕词的写作方法
2019/04/02 职场文书
Ajax实现三级联动效果
2021/10/05 Javascript
Spring 使用注解开发
2022/05/20 Java/Android