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 相关文章推荐
Python3遍历目录树实现方法
May 22 Python
PYTHON压平嵌套列表的简单实现
Jun 08 Python
在Python中执行系统命令的方法示例详解
Sep 14 Python
git进行版本控制心得详谈
Dec 10 Python
基于python内置函数与匿名函数详解
Jan 09 Python
Python基于socket实现简单的即时通讯功能示例
Jan 16 Python
python实现对文件中图片生成带标签的txt文件方法
Apr 27 Python
Python使用POP3和SMTP协议收发邮件的示例代码
Apr 16 Python
Django在pycharm下修改默认启动端口的方法
Jul 26 Python
解决pycharm最左侧Tool Buttons显示不全的问题
Dec 17 Python
Python递归求出列表(包括列表中的子列表)的最大值实例
Feb 27 Python
关于pytest结合csv模块实现csv格式的数据驱动问题
May 30 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利用二叉堆实现TopK-算法的方法详解
2017/04/24 PHP
关于document.cookie的使用javascript
2010/10/29 Javascript
键盘KeyCode值列表汇总
2013/11/26 Javascript
js实现网页倒计时、网站已运行时间功能的代码3例
2014/04/14 Javascript
基于jQuery实现的图片切换焦点图整理
2014/12/07 Javascript
JavaScript解析json格式数据简单示例
2014/12/09 Javascript
jquery点击缩略图切换视频播放特效代码分享
2015/09/15 Javascript
jQuery动态添加及删除表单上传元素的方法(附demo源码下载)
2016/01/15 Javascript
微信小程序教程之本地图片上传(leancloud)实例详解
2016/11/16 Javascript
flexslider.js实现移动端轮播
2017/02/05 Javascript
JavaScript严格模式下关于this的几种指向详解
2017/07/12 Javascript
javaScript中的空值和假值
2017/12/18 Javascript
使用Vue的slot插槽分发父组件内容实现高度复用、更加灵活的组件(推荐)
2018/05/01 Javascript
详解Vue的七种传值方式
2021/02/08 Vue.js
[02:56]DOTA2上海特锦赛小组赛解说FreeAgain采访花絮
2016/02/27 DOTA
python将MongoDB里的ObjectId转换为时间戳的方法
2015/03/13 Python
python集合用法实例分析
2015/05/30 Python
在Django框架中运行Python应用全攻略
2015/07/17 Python
linux环境下python中MySQLdb模块的安装方法
2017/06/16 Python
Python实现的多线程同步与互斥锁功能示例
2017/11/30 Python
Python获取当前函数名称方法实例分享
2018/01/18 Python
使用python的pexpect模块,实现远程免密登录的示例
2019/02/14 Python
Django框架搭建的简易图书信息网站案例
2019/05/25 Python
python3 循环读取excel文件并写入json操作
2020/07/14 Python
css3绘制百度的小度熊
2018/10/29 HTML / CSS
纯CSS3制作页面切换效果的实例代码
2019/05/30 HTML / CSS
Vilebrequin欧洲官网:法国豪华泳装品牌(男士沙滩裤)
2018/04/14 全球购物
mysql的最长数据库名,表名,字段名可以是多长
2014/04/21 面试题
自我鉴定范文200字
2013/10/02 职场文书
大型晚会策划方案
2014/02/06 职场文书
预备党员2014全国两会学习心得体会
2014/03/10 职场文书
企业挂职心得体会
2014/09/10 职场文书
客户付款通知书
2015/04/23 职场文书
热血教师观后感
2015/06/10 职场文书
pytorch 6 batch_train 批训练操作
2021/05/28 Python
SpringMVC 整合SSM框架详解
2021/08/30 Java/Android