Python matplotlib绘制图形,包括点、曲线、注释和箭头

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

1. 结果预览:

2. 代码如下:

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

  1. x = np.linspace(2, 21, 20)
  2. y1 = np.log10(x) + 0.5
  3. y2 = np.log10(x) + 1
  4. plt.subplot(211)
  5. plt.plot(x, y1)
  6. plt.subplot(212)
  7. plt.plot(x, y2)
  8. plt.show()

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

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()  # 最后调用此句,显示出绘制的图形。

(0)

相关推荐

  • matplotlib pyplot 画图基础教程

    用Python绘制图表在工作中是一项非常有用的技能,虽然说强大的matlab基本可以满足我们所有的绘图需求,但是在有些情况下,使用Python绘图,让图表直接可以直接随着Python程序的运行而产生. ...

  • 第92天:Python Matplotlib 进阶操作

    本章节主要是 Matplotlib 和 NumPy  实际操作案例讲解,matplotlib 通常与 NumPy 一起使用,提供了一种有效的 MatLab 开源替代方案,除此之外,它还可以和其他图形工 ...

  • 基于OpenCV的图像强度操作

    重磅干货,第一时间送达 01. 什么是图像强度操作 更改任何通道中的像素值 对图像的数学运算 亮度变化 对比度变化 伽玛操纵 直方图均衡 图像预处理中的滤波等增强 使用OpenCV加载图像 impor ...

  • 纯干货:手把手教你用Python做数据可视化(附代码)

    作者:Wes McKinney本文摘编自<利用Python进行数据分析>第2版matplotlib是一个用于生成出版级质量图表(通常是二维的)的桌面绘图包.该项目由John Hunter于 ...

  • Matplotlib使用(2)

    pyplot简介 matplotlib.pyplot是使matplotlib像MATLAB一样工作的命令样式函数的集合.每个pyplot功能都会对图形进行一些更改:例如,创建图形,在图形中创建绘图区域 ...

  • 手把手教你用Matplotlib进行数据可视化

    导读:Matplotlib是建立在NumPy数组上的一个多平台数据可视化库.在2002年,约翰·亨特(John Hunter)提出Matplotlib,最初的构思是设计为IPython的一个补丁,以便 ...

  • matplotlib作图之注释

    不写python的日子每天都觉得没啥意思,重新搞起~ matplotlib中图的注释 直接上代码看例子: import numpy as np import matplotlib.pyplot as ...

  • 三维散点图

    上篇主要介绍了s,c,marker参数,scatter函数还有其他的参数,比如: 1.alpha,表示透明程序,取值 0(透明)和1(不透明)之间,默认值:1. 2.edgecolors,表示边缘颜色 ...

  • 趣玩 Python 之绘制基本图形

    Python中的类库极其丰富,数据科学中经常会用到可视化技术.今天我们来一学习一下Python中基本图形的绘制方法,本文我们将主要基于turtle(小乌龟)库来画图~ 为了方便后面进行交互性演示,这里 ...

  • Python的代码书写规范、代码注释规范、代码命名规范详解

    代码书写规范 缩进 统一使用 4 个空格进行缩进,不要混合使用制表符和空格来缩进,也不要单独使用制表符Tab.对于行连接的情况,可以垂直对齐换行的元素. 行宽 每行代码尽量不超过 80 个字符,在特殊 ...

  • 全新因果推断方法新书, 配套R, Stata和Python的代码, 还包括教授视频和PPT素材!

    邮箱:econometrics666@126.com 所有计量经济圈方法论丛的code程序, 宏微观数据库和各种软件都放在社群里.欢迎到计量经济圈社群交流访问. 前些日,推荐了①重磅! 汉森教授又修订 ...

  • 乐学堂寒山骑士:资金曲线怎么做?教你绘制自己的资金曲线

    乐学堂寒山骑士说投资记录里面必须要做的一件事,就是绘制自己的资金曲线图,这是你的最终成果体现,别人可以看不懂你的投资体系,可以无暇顾及你的投资理念,甚至不想知道你什么时候买过什么股票,这些长期来看都不 ...

  • 第91天:Python matplotlib introduction

    今天我们一起来探究 Python 中一个很有趣的模块--Matplotlib,Matplotlib 是一个非常优秀的 Python 2D 绘图库,只要给出符合格式的数据,通过 Matplotlib 就 ...

  • 有人说Python是青铜?我用50行Python代码绘制3D机场分布图

    原创 菜鸟哥 菜鸟学Python 2020-03-23 绘制一款的3D图形,不仅可以直观的展示数据分析的结果,也更方便数据化运营,同时也让工作成果更容易被大众理解.本文就基于python绘制一款基础的 ...

  • Python Matplotlib简易教程

    详情请见:Matplotlib python 数据可视化神器 简单演示 import matplotlib.pyplot as pltimport numpy as np# 从[-1,1]中等距去50 ...

  • 爆强!直接把 Python 编写的图形程序打包为安卓 APP

    作者丨州的先生 来源丨州的先生(ID:zmister2016) 如果想使用 Python 语言编写图形界面程序,那么有不少的框架可以提供支持,比如 Tkinter.Qt for Python.WxPy ...