1. 共享单一绘图区域的坐标轴

有时候,我们想将多张图形放在同一个绘图区域,不想在每个绘图区域只绘制一幅图形。这时候,就可以借助共享坐标轴的方法实现在一个绘图区域绘制多幅图形的目的。

import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mpl mpl.use('Qt5Agg')
mpl.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['font.serif'] = ['SimHei']
mpl.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题,或者转换负号为字符串 fig, ax1 = plt.subplots() t = np.arange(0.05, 10., 0.01)
s1 = np.exp(t)
ax1.plot(t, s1, c="b", ls="-") ax1.set_xlabel("x坐标轴")
ax1.set_ylabel("以e为底的指数", color="b")
ax1.tick_params("y", colors="b") ax2 = ax1.twinx()
s2 = np.cos(t ** 2)
ax2.plot(t, s2, c="r", ls=":") ax2.set_ylabel("余弦函数", color="r")
ax2.tick_params("y", colors="r") plt.show()

同样可以用twiny()方法共享y轴

2. 共享不同子区绘图区域的坐标轴

subplots()函数有两个命名关键字参数sharexsharey,有四种取值

  • 'row'
  • 'col'
  • 'all',等同于True
  • 'none',等同于False
import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mpl mpl.use('Qt5Agg')
mpl.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['font.serif'] = ['SimHei']
mpl.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题,或者转换负号为字符串 x1 = np.linspace(0, 2 * np.pi, 400)
y1 = np.cos(x1 ** 2) x2 = np.linspace(0.01, 10, 100)
y2 = np.sin(x2) x3 = np.random.rand(100)
y3 = np.linspace(0, 3, 100) x4 = np.arange(0, 6, 0.5)
y4 = np.power(x4, 3) fig, ax = plt.subplots(2, 2) ax1 = ax[0, 0]
ax1.plot(x1, y1) ax2 = ax[0, 1]
ax2.plot(x2, y2) ax3 = ax[1, 0]
ax3.scatter(x3, y3) ax4 = ax[1, 1]
ax4.scatter(x4, y4) plt.show()

基本图形如图所示:

  • sharex='all'

  • sharex='none'

  • sharex='row'

  • sharex='col'

sharey类似

将共享坐标轴的子区之间的空隙去掉

import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mpl mpl.use('Qt5Agg')
mpl.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['font.serif'] = ['SimHei']
mpl.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题,或者转换负号为字符串 x1 = np.linspace(0, 2 * np.pi, 400)
y1 = np.cos(x1 ** 2) x2 = np.linspace(0.01, 10, 100)
y2 = np.sin(x2) x3 = np.random.rand(100)
y3 = np.linspace(0, 3, 100) x4 = np.arange(0, 6, 0.5)
y4 = np.power(x4, 3) fig, ax = plt.subplots(2, 2, sharex='all', sharey='all')
fig.subplots_adjust(hspace=0, wspace=0) ax1 = ax[0, 0]
ax1.plot(x1, y1) ax2 = ax[0, 1]
ax2.plot(x2, y2) ax3 = ax[1, 0]
ax3.scatter(x3, y3) ax4 = ax[1, 1]
ax4.scatter(x4, y4) plt.show()

3. 共享个别子区绘图区域的坐标轴

import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mpl mpl.use('Qt5Agg')
mpl.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['font.serif'] = ['SimHei']
mpl.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题,或者转换负号为字符串 x1 = np.linspace(0, 2 * np.pi, 400)
y1 = np.cos(x1 ** 2) x2 = np.linspace(0.01, 10, 100)
y2 = np.sin(x2) x3 = np.random.rand(100)
y3 = np.linspace(0, 3, 100) x4 = np.arange(0, 6, 0.5)
y4 = np.power(x4, 3) fig, ax = plt.subplots(2, 2) ax1 = plt.subplot(221)
ax1.plot(x1, y1) ax2 = plt.subplot(222)
ax2.plot(x2, y2) ax3 = plt.subplot(223)
ax3.scatter(x3, y3) ax4 = plt.subplot(224, sharex=ax1)
ax4.scatter(x4, y4) plt.show()

4. 优化坐标轴范围显示

plt.autoscale(enable=True, axis="both", tight=True)

『Python』matplotlib共享绘图区域坐标轴的更多相关文章

  1. 『Python』matplotlib坐标轴应用

    1. 设置坐标轴的位置和展示形式 import numpy as np import matplotlib.pyplot as plt import matplotlib as mpl mpl.use ...

  2. 『Python』matplotlib初识

    1. 核心原理 使用matplotlib绘图的原理,主要就是理解figure(画布).axes(坐标系).axis(坐标轴)三者之间的关系. 下面这幅图更详细: 以"美院学生张三写生画画&q ...

  3. 『Python』matplotlib划分画布的主要函数

    1. subplot() 绘制网格区域中几何形状相同的子区布局 函数签名有两种: subplot(numRows, numCols, plotNum) subplot(CRN) 都是整数,意思是将画布 ...

  4. 『Python』matplotlib的imshow用法

    热力图是一种数据的图形化表示,具体而言,就是将二维数组中的元素用颜色表示.热力图之所以非常有用,是因为它能够从整体视角上展示数据,更确切的说是数值型数据. 使用imshow()函数可以非常容易地制作热 ...

  5. 『Python』matplotlib常用函数

    1. 绘制图表组成元素的主要函数 1.1 plot()--展现量的变化趋势 import numpy as np import matplotlib.pyplot as plt import matp ...

  6. 『Python』matplotlib实现GUI效果

    1. 类RadioButtons的使用方法 类似单选框 import numpy as np import matplotlib.pyplot as plt import matplotlib as ...

  7. 『Python』matplotlib实现动画效果

    一般而言,在绘制复杂动画时,主要借助模块animation来完成 import numpy as np import matplotlib.pyplot as plt import matplotli ...

  8. 『Python』matplotlib常用图表

    这里简要介绍几种统计图形的绘制方法,其他更多图形可以去matplotlib找examples魔改 1. 柱状图 柱状图主要是应用在定性数据的可视化场景中,或是离散数据类型的分布展示.例如,一个本科班级 ...

  9. matplotlib学习日记(十)-共享绘图区域的坐标轴

    (1)共享单一绘图区域的坐标轴 ''' 上一讲介绍了画布的划分,有时候想将多张图放在同一个绘图区域, 不想在每个绘图区域只绘制一幅图形,这时候借助共享坐标轴的方法实现在一个绘图区 绘制多幅图形的目的. ...

随机推荐

  1. springboot 2.0 整合 RestTemplate

    首先导入springboot 的 web 包 <dependency> <groupId>org.springframework.boot</groupId> &l ...

  2. JavaWeb 三大器--Listener、Filter 和Interceptor 总结

    说明:web.xml的加载顺序是:[Context-Param]->[Listener]->[Filter]->[Servlet],而同个类型之间的实际程序调用的时候的顺序是根据对应 ...

  3. Java从文件路径中获取文件名的几种方法

    举例:String fName =" G:\Java_Source\navigation_tigra_menu\demo1\img\lev1_arrow.gif " 方法一: 1 ...

  4. Vue状态管理模式---Vuex

    1. Vuex是做什么的? 官方解释: Vuex 是一个专为Vue.js 应用程序开发的 状态管理模式 它采用 集中式存储管理 应用的所有组件的状态, 并以相应的规则保证状态以一种可预测的方式发生变化 ...

  5. Vuex的同步异步存值取值

    1. vue中各个组件之间传值 1.父子组件 父组件-->子组件,通过子组件的自定义属性:props 子组件-->父组件,通过自定义事件:this.$emit('事件名',参数1,参数2, ...

  6. Docker数据映射

    1.映射目录 docker run -v 2.映射文件 docker run -v

  7. com.google.zxing.NotFoundException-识别图片二维码信息错误

    一.问题由来 自己在做一个小程序项目的后台,其中需要使用到识别图片二维码信息,而且是必须在Java后台进行识别二维码操作.去百度里面很快找到一个方法, 可以识别简单的二维码,而且自己生成的简单的二维码 ...

  8. docker for zabbix

    docker run -d -v /home/zabbix/mysql --name zabbix-db-storage busybox:latest docker run -d --name zab ...

  9. 大数据最后一公里——2021年五大开源数据可视化BI方案对比

    个人非常喜欢这种说法,最后一公里不是说目标全部达成,而是把整个路程从头到尾走了一遍. 大数据在经过前几年的野蛮生长以后,开始与数据中台的概念一同向着更实际的方向落地.有人问,数据可视化是不是等同于数据 ...

  10. golang sync.noCopy 类型 —— 初探 copylocks 与 empty struct

    问题引入 学习golang(v1.16)的 WaitGroup 代码时,看到了一处奇怪的用法,见下方类型定义: type WaitGroup struct { noCopy noCopy ... } ...