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实现的Kmeans++算法实例
Apr 26 Python
极简的Python入门指引
Apr 01 Python
Python使用PyCrypto实现AES加密功能示例
May 22 Python
python编程通过蒙特卡洛法计算定积分详解
Dec 13 Python
使用 Python 玩转 GitHub 的贡献板(推荐)
Apr 04 Python
利用Python小工具实现3秒钟将视频转换为音频
Oct 29 Python
Python调用.NET库的方法步骤
Dec 27 Python
Python Websocket服务端通信的使用示例
Feb 25 Python
Django基于Models定制Admin后台实现过程解析
Nov 11 Python
Python + opencv对拍照得到的图片进行背景去除的实现方法
Nov 18 Python
地图可视化神器kepler.gl python接口的使用方法
Dec 22 Python
Python带你从浅入深探究Tuple(基础篇)
May 15 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
php的一些小问题
2010/07/03 PHP
解决文件名解压后乱码的问题 将文件名进行转码的代码
2012/01/10 PHP
如何使用Gitblog和Markdown建自己的博客
2015/07/31 PHP
PHP框架laravel的.env文件配置教程
2017/06/07 PHP
php递归函数怎么用才有效
2018/02/24 PHP
Laravel实现ApiToken认证请求
2019/10/14 PHP
让你的PHP,APACHE,NGINX支持大文件上传
2021/03/09 PHP
Javascript 获取LI里的内容
2008/12/17 Javascript
javascript使用shift+click实现选择和反选checkbox的方法
2015/05/04 Javascript
JavaScrip调试技巧之断点调试
2015/10/22 Javascript
JavaScript+html5 canvas制作的百花齐放效果完整实例
2016/01/26 Javascript
Vue.js每天必学之组件与组件间的通信
2016/09/08 Javascript
jQuery使用getJSON方法获取json数据完整示例
2016/09/13 Javascript
javascript实现一个网页加载进度loading
2017/01/04 Javascript
Javascript Event(事件)的传播与冒泡
2017/01/23 Javascript
jquery实现数字输入框
2017/02/22 Javascript
vue2.0实战之基础入门(1)
2017/03/27 Javascript
AngularJS实现自定义指令及指令配置项的方法
2017/11/20 Javascript
详解vue-cli+es6引入es5写的js(两种方法)
2019/04/19 Javascript
微信公众号中的JSSDK接入及invalid signature等常见错误问题分析(全面解析)
2020/04/11 Javascript
最全vue的vue-amap使用高德地图插件画多边形范围的示例代码
2020/07/17 Javascript
[42:50]NB vs VP 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python探索之pLSA实现代码
2017/10/25 Python
python 通过SSHTunnelForwarder隧道连接redis的方法
2019/02/19 Python
pyqt5 lineEdit设置密码隐藏,删除lineEdit已输入的内容等属性方法
2019/06/24 Python
python每5分钟从kafka中提取数据的例子
2019/12/23 Python
Pytorch 使用opnecv读入图像由HWC转为BCHW格式方式
2020/06/02 Python
Python定义一个函数的方法
2020/06/15 Python
Python 实现劳拉游戏的实例代码(四连环、重力四子棋)
2021/03/03 Python
现代生活方式的家具和装饰:Dot & Bo
2018/12/26 全球购物
学校运动会开幕演讲稿
2014/01/04 职场文书
学校师德师风自我剖析材料
2014/09/29 职场文书
无罪辩护词范文
2015/05/21 职场文书
开票证明
2015/06/23 职场文书
2016银行求职自荐信
2016/01/28 职场文书
Golang 如何实现函数的任意类型传参
2021/04/29 Golang