IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> matplotlib共享绘图区域坐标轴 -> 正文阅读

[Python知识库]matplotlib共享绘图区域坐标轴


1.一个区域,左右两边都有纵坐标

在这里插入图片描述

import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np
mpl.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['axes.unicode_minus'] = False

fig, ax1 = plt.subplots()
t = np.arange(0.05, 10.0, 0.01)
s1 = np.exp(t)
ax1.plot(t, s1, c='b', ls='-')
ax1.set_xlabel('x坐标轴')
ax1.set_ylabel('以e为底指数函数', c='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("余弦函数", c='r')
ax2.tick_params('y', colors='r')

plt.show()

使用ax1.set_ylabel()和ax1.tick_params()实例方法将y轴标签、主刻度线和刻度标签都设置成蓝色。调用实例方法ax1.twinx()生成实例ax2,此时实例ax2的x轴与实例ax1的x轴是共享的,实例ax2的刻度线和刻度标签在右侧轴脊处绘制。

2.在子区域里共享坐标轴

调用签名使用“subplots( 1,2,sharey=True)“的形式,其中参数sharey表示子区1和子区2共享y坐标轴。相对应的,还可以设置参数sharex的取值形式。具体而言,参数sharex和参数sharey的取值形式有四种,分别是row、col、all和none, 其中all和none分别等同于“True” 和“False”。 下面我们参数sharey的取值形式与使用方法和参数sharex完全相同,不赘述。
先放一张原始的图:
在这里插入图片描述

import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np
mpl.rcParams['font.sans-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)
ax1 = ax[0, 1]
ax1.plot(x2, y2)
ax1 = ax[1, 0]
ax1.scatter(x3, y3)
ax1 = ax[1, 1]
ax1.scatter(x4, y4)

plt.show()

plt.subplots(2, 2)加上sharex=‘all‘的效果,会让横坐标变得统一。而且横坐标是取子区域里最大的那个。

plt.subplots(2, 2,sharex='all')

在这里插入图片描述

plt.subplots(2, 2,sharex='col')   # 每一列都以这一列里的取值范围上线为共享范围,如下图
plt.subplots(2, 2,sharex='row')   # 每一行都以这一行里的取值范围上线为共享范围,就不放图了 

在这里插入图片描述
当然还可以有办法把子图间的空隙去掉,plt.subplots_adjust(hspace=0)就是去除水平方向空隙。(代码放在设置共享坐标的下面)
在这里插入图片描述

3.移动坐标轴的

import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np
mpl.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['axes.unicode_minus'] = False

x = np.linspace(-2*np.pi, 2*np.pi, 200)
y = np.sin(x)
y2 = np.cos(x)
ax = plt.subplot(111)
plt.plot(x, y, ls='-', lw=2, label='$sin(x)$')
plt.plot(x, y2, ls='-', lw=2, label='$cos(x)$')
plt.legend(loc='lower left')
plt.xlim(-2*np.pi, 2*np.pi)
plt.xticks([-2*np.pi, -3*np.pi/2, -1*np.pi, -1*np.pi/2, 0, np.pi/2, np.pi, 3*np.pi/2, 2*np.pi],
           [r"$-2\pi$", r"$-3\pi/2$", r"$-\pi$", r"$-2\pi/2$", r"$0$", r"$pi/2$", r"$\pi$", r"$3\pi/2$", r"$2\pi$"])
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.spines['bottom'].set_position(('data', 0))
ax.spines['left'].set_position(('data', 0))
ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')
plt.show()

在这里插入图片描述

代码主体部分,我们主要调用前面章节的代码内容,在此基础上,我们添加了两条关键代码:
①ax.spines[‘bottom’].set_position((‘data’, 0))
②ax.spines[‘left’].set_position((‘data’, 0))
ax.spines会调用轴脊字典,其中的键是轴脊位置,如"top““right”“bottom"“left"键值是matplotlib.spines.Spine对象,实例方法set position()就是对轴脊位置的控制方法,其中参数“data"
说明控制轴脊位置的坐标值与折线图的坐标系统一致。 因此,参数0就表示将底端轴脊移动到左侧轴脊的零点处。同理,将左侧轴脊移动到底端轴脊的零点处。在matplotib元素组成结构中,已经说明轴脊是刻度线和刻度标签的载体。这样,当左侧和底端轴脊移动位置时,刻度线和刻度标签也会相应的移动位置。我们将x轴刻度线放在底端轴脊上,将y轴刻度线放在左侧轴脊上。从而,完成
移动坐标轴位置的工作。


参考书目《Python数据可视化之matplotlib实践》。

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-08-26 12:04:23  更:2021-08-26 12:05:58 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/26 23:18:08-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计