14.面向对象API绘图
14.1.图中图 (A Plot inside of Another Plot)
14.2.设定绘图范围 (Setting the Plot Range)
14.3.对数尺度(Logarithmic Scale)

14.面向对象API绘图

Matplotlib绘图库的操作是通过API实现的,一种操作方法是类似MATLAB的函数接口的API;另一种操作方法是面向对象的API。这两种API可以并行使用,不过函数接口的API的易用性明显好于面向对象的API。

就像Python本身一样,Matplotlib是以面向对象的方式编程和设计的。当使用多个图形时,或者当一个图形由多个子图组成时,使用图形对象方法的优点就会显现出来。

在下面的示例中,我们以面向对象的方式创建一个绘图。首先创建一个新的figure实例。将其引用存储在一个Figure类实例,即变量figure实例。将其引用存储在一个Figure类实例,即变量fig中。然后,我们fig中使用add_axes方法创建一个新的轴的实例。

import numpy as np
import matplotlib.pyplot as plt
fig = plt.figure()
X = np.arange(0,10)
Y = np.random.randint(1, 20, size=10)
left, bottom, width, height = 0.1, 0.1, 0.8, 0.8
axes = fig.add_axes([left, bottom, width, height])
axes.plot(X, Y, 'b')
axes.set_xlabel('x')
axes.set_ylabel('y')
axes.set_title('title')
plt.show()

在不使用figure实例的情况下,代码如下所示:

import numpy as np
import matplotlib.pyplot as plt
fig = plt.figure()
X = np.arange(0,10)
Y = np.random.randint(1, 20, size=10)
left, bottom, width, height = 0.1, 0.1, 0.8, 0.8
axes = fig.add_axes([left, bottom, width, height])
axes.plot(X, Y, 'b')
axes.set_xlabel('xxxxxxxxxxxxx')
axes.set_ylabel('yyyyyyyyyyyyy')
axes.set_title('title biaoti')
plt.show()

14.1.图中图 (A Plot inside of Another Plot)

import numpy as np
import matplotlib.pyplot as plt
fig = plt.figure()
X = [1, 2, 3, 4, 5, 6, 7]
Y = [1, 3, 4, 2, 5, 8, 6]
axes1 = fig.add_axes([0.1, 0.1, 0.9, 0.9]) # main axes
# add_axes 参数rect The dimensions [left, bottom, width, height] of the new axes.
# All quantities are in fractions of figure width and height.
axes2 = fig.add_axes([0.2, 0.6, 0.4, 0.3]) # inside axes
# main figure
axes1.plot(X, Y, 'r')
axes1.set_xlabel('x')
axes1.set_ylabel('y')
axes1.set_title('title')
# insert
axes2.plot(Y, X, 'g')
axes2.set_xlabel('y')
axes2.set_ylabel('x')
axes2.set_title('title inside')
plt.show()

14.2.设定绘图范围 (Setting the Plot Range)

配置轴的范围可以通过在轴对象中使用set_ylim和set_xlim方法来完成。 使用axis(‘tight’),可以自动创建"tightly fitted" 的轴范围:

import numpy as np
import matplotlib.pyplot as plt
fig, axes = plt.subplots(1, 3, figsize=(10, 4))
x = np.arange(0, 5, 0.25)
axes[0].plot(x, x**2, x, x**3)
axes[0].set_title("default axes ranges")
axes[1].plot(x, x**2, x, x**3)
axes[1].axis('tight')
axes[1].set_title("tight axes")
axes[2].plot(x, x**2, x, x**3)
axes[2].set_ylim([0, 60])
axes[2].set_xlim([2, 5])
axes[2].set_title("custom axes range")
plt.show()

14.3.对数尺度(Logarithmic Scale)

可以为一个或两个轴设置对数尺度。使用接受一个参数(值为log)的set_xscale和set_yscale方法分别设置每个轴的scale:

import numpy as np
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
x = np.arange(0, 5, 0.25)
ax.plot(x, x ** 2, x, x ** 3)
ax.set_yscale("log")
plt.show()

14_面向对象API绘图、图中图 (A Plot inside of Another Plot)、设定绘图范围Setting the Plot Range、对数尺度Logarithmic Scale相关推荐

  1. 在MATLAB的figure图中画局部放大的图中图

    在MATALB绘图中,有时会遇到这样的情况,需要通过放大figure图的局部,针对细节加以说明.例如:在给定的尺度下有两条或多条曲线难以区别,此时就需要对其进行局部放大来加以区分.参考网上的解决方法1 ...

  2. Python利用matplotlib做图中图及次坐标轴

    图中图 准备数据 import matplotlib.pyplot as pltfig = plt.figure() x = [1, 2, 3, 4, 5, 6, 7] y = [1, 3, 4, 2 ...

  3. plt.figure、plt.subplot介绍以及绘制图中图(含代码)

    目录 1.1 plt.figure()函数语法介绍 1.2 figure实例 2.1 subplot函数及其语法说明 2.2 用subplot画多个子图 3.1 subplots函数介绍 4.1 使用 ...

  4. matlab画一个局部放大的图中图

    局部放大的图中图 第一种:magnify是个动态放大镜,固化后可以用tools>editplot移动小图,能选取多个局部图,这个方法不错 用法:打开figure图,输入magnify,左键动态选 ...

  5. python(matplotlib8)——图中图(在figure中画多个坐标图),次坐标(两个y轴)

    文章目录 前言 图中图 次坐标(两个y轴) 前言 来自 莫烦python的总结. 图中图 left,bottom,width,height = 百分比 fig = plt.figure() x = [ ...

  6. Python画图(直方图、多张子图、二维图形、三维图形以及图中图)

    Python画图很方便,不管是平时的学习还是教学当中,都将经常用到,特别直观,其中主要用到两个常用的库,一个二维和三维的:matplotlib.pyplot,mpl_toolkits.mplot3d ...

  7. ARCGIS制作图中图——小图/一幅多图

    文章目录 1.中国完整政区的shape文件制作 2 制作图中图 2.1 选择目标区域 2.2 选择目标区域 2.3 创建研究区shapefile 2.3 创建研究区shapefile 3 最后的小调整 ...

  8. MATLAB中使用magnify做图中图

    网上一般有三种方法在MATLAB中做图中图,但是我感觉使用magnify是magnify是个动态放大镜,固化后可以用tools>edit plot移动小图,能选取多个局部图.下面详细讲解其使用方 ...

  9. chatgpt赋能python:Python中的图中图:什么是图中图?如何使用?

    Python中的图中图:什么是图中图?如何使用? 在Python中的数据可视化中,图中图是一种非常有用的工具,它可以帮助我们以一种清晰而有用的方式展示更多的信息.从字面上看,图中图意味着图形中包含另一 ...

最新文章

  1. 2.软件项目管理软件
  2. Java类加载笔记(1)
  3. nginx域名配置虚拟主机
  4. jQuery的each()方法
  5. 网页打开微信链接 无法返回
  6. java运行时间间隔_Java:安排作业按时间间隔运行
  7. 设计模式 - Command
  8. 放在请求头目的_浅谈http的几种请求方法
  9. (五)基于matchTemplate的图像区域匹配
  10. 使用HTML5的语义标签
  11. 《Java程序员全攻略:从小工到专家》连载二:IT行情分布
  12. iOS .xib文件 添加点击事件 及 点击不响应 注意点
  13. Hadoop 文本分类 终于跑通了
  14. 内容 超链接_Word高效办公:自动创建带超链接的内容目录和图表目录
  15. 深度学习结合SLAM的研究思路/成果整理之(二)语义SLAM 端到端
  16. 用 Python 总结分析男篮世界杯
  17. HTML中哪些标记能放在首部,HTML基本结构与常用标记
  18. 吴恩达反向传播算法推导,吴恩达卷积神经网络ppt
  19. 群晖Docker的高级操作
  20. 向NS2中添加协议PING[转载]

热门文章

  1. python语言与c语言相比在分支结构上有什么不同_大工20春 C/C 语言程序设计 在线作业3 - 百度文库...
  2. python3安卓版安装教程_安装python3的详细教程
  3. 太好了,一分钟带你分清Python的模块、库、包有什么联系和区别?
  4. VTK:旋转球体用法实战
  5. boost::mpi模块实现一个简单的点类,我们可以构建、添加、比较和 连载
  6. boost::mp11::mp_min_element_q相关用法的测试程序
  7. boost::geometry::srs::spar用法的测试程序
  8. boost::geometry模块多边形DP算法简化示例
  9. boost::coroutine模块实现power的测试程序
  10. GDCM:gdcm::ModuleEntry的测试程序