使用Matplotlib画多y轴图

news2024/11/17 0:08:54

使用Matplotlib画多y轴图

  • 代码
  • 成品图

代码

import matplotlib.pyplot as plt
import mpl_toolkits.axisartist as AA
from mpl_toolkits.axes_grid1 import host_subplot

%matplotlib inline
config = {
    "font.family": "serif",
    "font.size": 14,
    "mathtext.fontset": "stix",
    "font.serif": ["Times New Roman"],
    "xtick.direction": "in",
    "ytick.direction": "in",
}
plt.rcParams.update(config)

host = host_subplot(111, axes_class=AA.Axes)
# plt.subplots_adjust(right=0.75)
par1 = host.twinx()
par2 = host.twinx()
par3 = host.twinx()


# set the position of axes
host.axis["top"].set_visible(True)

offset = 0
new_fixed_axis = par1.get_grid_helper().new_fixed_axis
par1.axis["right"] = new_fixed_axis(loc="right", axes=par1, offset=(offset, 0))
par1.axis["right"].toggle(all=True)

offset = 50
new_fixed_axis = par2.get_grid_helper().new_fixed_axis
par2.axis["right"] = new_fixed_axis(loc="right", axes=par2, offset=(offset, 0))
par2.axis["right"].toggle(all=True)
# par2.axis["right"].set_visible(False)

offset = 110
new_fixed_axis = par3.get_grid_helper().new_fixed_axis
par3.axis["right"] = new_fixed_axis(loc="right", axes=par3, offset=(offset, 0))
par3.axis["right"].toggle(all=True)


host.set_xlabel("Time (s)", fontsize=config["font.size"] + 2)
# host.set_ylabel("Shear stress, normal stress (MPa)")
host.text(-22, 0.35, 'Normal stress, ', color='c', va='center', rotation='vertical', fontsize=config["font.size"] + 2)
host.text(-22, 0.74, 'shear stress ', color='m', va='center', rotation='vertical', fontsize=config["font.size"] + 2)
host.text(-22, 1.01, '(MPa)', color='k', va='center', rotation='vertical', fontsize=config["font.size"] + 2)
par1.set_ylabel("Slip displacement (mm)", fontsize=config["font.size"] + 2)
par2.set_ylabel("Slip velocity (mm/s)", fontsize=config["font.size"] + 2)
par3.set_ylabel("Normal displacement (mm)", fontsize=config["font.size"] + 2)


# plot
colors = ["c", "m", "b", "r", "k"]
p0 = host.plot(
    data2.index,
    data2["垂直応力(1)[MPa]"],
    "-",
    linewidth=1,
    color=colors[0],
    label="Normal stress",
)
p0 = host.plot(
    data2.index,
    data2["せん断応力[MPa]"],
    "-",
    linewidth=1,
    color=colors[1],
    label="Shear stress",
)
p1 = par1.plot(
    data2.index,
    data2["せん断変位[mm]"],
    linewidth=1,
    color=colors[2],
    label="shear displacement",
)
p2 = par2.plot(
    data2.index,
    data2["velocity[mm/s]"],
    linewidth=1,
    color=colors[3],
    label="shear velocity",
)
# par2.plot([0, 800], [0, 0], "k-", linewidth=0.8)
p3 = par3.plot(
    data2.index,
    data2["垂直全平均変位[mm]"],
    linewidth=1,
    color=colors[4],
    label="Normal displacement",
)


# 轴名称颜色
host.axis["left"].label.set_color(p0[0].get_color())
par1.axis["right"].label.set_color(p1[0].get_color())
par2.axis["right"].label.set_color(p2[0].get_color())
par3.axis["right"].label.set_color(p3[0].get_color())


# set limits of the axes
host.set_xlim(0, 200)
host.set_ylim(0, 1.2)
par1.set_ylim(0, 18)
par2.set_ylim(-0.05, 0.4)
par3.set_ylim(0, 0.6)


par3.plot([45, 45], [0, 20], "k--", alpha=0.5)
# start and end time point for evaluating normal stiffness
par3.plot([120, 120], [0, 20], "k--", alpha=0.5, label='Start for computing normal stifness')
par3.plot([148, 148], [0, 20], "k--", alpha=0.5, label='End for computing normal stifness')
# start and end time point for shearing dilation
par3.plot([178, 178], [0, 20], "k--", alpha=0.5, label='Start for computing shear dilation')
par3.plot([187, 187], [0, 20], "k--", alpha=0.5, label='End for computing shear dilation')

# plt.legend(ncol=1, bbox_to_anchor=(1.45, 0.7), loc=2, borderaxespad=0)
host.text(3, 1.12,
          '${\\rm JRC=3.21}, \\sigma_{\\rm n}^{\\rm 0}=1 \\ {\\rm MPa}$',
          fontsize=config["font.size"] + 2)
host.text(-25, 1.185, '(a)', fontsize=config["font.size"] + 2, fontweight='bold')

plt.show()

成品图

多y轴图

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1116026.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

文件批量下载

网页可能暂时无法连接,或者它已永久性地移动到了新网址。 把uploads前面的 / 去掉 public function downFile(){// 网页可能暂时无法连接,或者它已永久性地移动到了新网址。 把uploads前面的/去掉$files ["uploads/20231018/868ac3fe78e40c67…

【React】高频面试题

1. 简述下 React 的事件代理机制? React使用了一种称为“事件代理”(Event Delegation)的机制来处理事件。事件代理是指将事件处理程序绑定到组件的父级元素上,然后在需要处理事件的子元素上触发事件时,事件将被委托给…

通过Django Admin+HttpRunner1.5.6实现简易接口测试平台

这篇文章主要介绍了通过Django AdminHttpRunner1.5.6实现简易接口测试平台,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 前言 这是一个使用HttpRunner开发接口平台的简单Demo。 新建Django项目 这是一个使…

lesson1-C++类和对象(上)

个人主页:Lei宝啊 愿所有美好如期而遇 目录 1.面向过程和面向对象初步认识 2.类的引入 3.类的定义 4.类的访问限定符及封装 5.类的作用域 6.类的实例化 7.类的对象大小的计算 8.类成员函数的this指针 1.面向过程和面向对象初步认识 在C语言中&#xff0…

Python 框架学习 Django篇 (五) Session与Token认证

我们前面经过数据库的学习已经基本了解了怎么接受前端发过来的请求,并处理后返回数据实现了一个基本的登录登出效果,但是存在一个问题,我们是将所有的请求都直接处理了,并没有去检查是否为已经登录的管理员发送的,如果…

基于ssm网上鲜花店

功能如下图所示 摘要 基于SSM(Spring、Spring MVC、MyBatis)的网上鲜花店,是一款全面电子商务平台,为用户提供了多层次、多功能的鲜花购物体验。该系统的架构结构使得用户可以注册、浏览商品、购物车管理、下单和支付等一系列操作…

智慧园区内涝积水解决方案

在当今园区化快速发展的背景下,智慧园区已经成为园区可持续发展的重要组成部分。然而,智慧园区的规划和运营需要一个综合性的方法,以应对各种挑战,其中之一是积水管理。为了有效地解决这一问题,WITBEE万宾针对智慧园区…

Linux 僵尸进程处理

现象 查看: # 查看僵尸进程 ps -aux |grep Z## ps -aux |grep Z|wc -l 定位僵尸进程 ## ps -A -ostat,ppid,pid,cmd |grep -e ^[Zz] 杀死僵尸进程 使用Kill -HUP 僵尸进程ID来杀死僵尸进程,往往此种情况无法杀死僵尸进程,此时就需要杀死僵尸进程的父进程。 kill -HUP …

051校园短期闲置资源置换平台

大家好✌!我是CZ淡陌。一名专注以理论为基础实战为主的技术博主,将再这里为大家分享优质的实战项目,本人在Java毕业设计领域有多年的经验,陆续会更新更多优质的Java实战项目,希望你能有所收获,少走一些弯路…

【异步爬虫】requests和aiohttp中代理IP的使用

前言 在进行爬虫开发时,我们常常需要使用代理IP来隐藏自己的真实IP地址,以避免被一些网站限制或封禁。requests和aiohttp是两个非常常用的工具,本文将分别介绍如何在它们中使用代理IP,希望可以帮助大家更好地进行异步爬虫开发。 …

1024程序员节特辑 | 解密Spring Cloud Hystrix熔断提高系统的可用性和容错能力

目录 1、Spring Cloud Hystrix 的背景和意义2、Spring Cloud Hystrix 的架构设计3、Spring Cloud Hystrix 的主要组件4、Spring Cloud Hystrix 熔断器的底层原理和整体架构5、Spring Cloud Hystrix 命令6、Spring Cloud Hystrix 熔断器7、Spring Cloud Hystrix参数说明8、Sprin…

点云平面拟合新国标怎么应对?

文章目录 一、应用背景二、算法原理三、代码实现首先我们看一下平面度的概念: 平面度:测量点集合中,在平面上方且距离基准平面最远的点到平面的距离+在平面下方且距离基准平面最远的点到平面的距离。 一、应用背景 在旧标准中,使用最小二乘法去拟合全部点,以拟合平面作为…

Cesium 实战 - 调整饱和度、对比度等参数,加载渲染美化影像底图

Cesium 实战 - 调整饱和度、对比度等参数,加载渲染美化影像底图 渲染美化影像底图核心代码完整代码:在线示例 本文包括渲染美化影像底图核心代码、完整代码以及在线示例。 渲染美化影像底图核心代码 这里放上核心代码: /*** todo 开启美化底…

阿里云oss丨You have no right to access this object because of bucket acl.

错误:You have no right to access this object because of bucket acl. ​ ​ 今天折腾oss的时候遇到这个问题,我以为是我没加白名单,后来想了下应该是使用阿里云OSS上传文件服务时报的错,新建的子用户AccessKey没有配置相应的管…

2023年最佳项目管理软件排行榜揭晓!

根据网络数据调查结果显示,今年有77%的组织将效率列为优先事项,而82%的领导人确认投资于新的项目管理和工作管理方案以提高效能。然而随着对价值的重新关注,选择适合的工程项目管理软件变得比以往任何时候都更加重要。好消息是通过对39个主要…

拿下域控主机

1.装域控环境 是dns环境 域控dns127.0.0.1 二.搭建 加入域 新建域用户 密码和域内主机一样 添加账户和密码 添加到域管理 这个随便 为了后期实验添加上 添加web和远程桌面 域控 用户添加到域 配置dns 攻击 kali 是公网 配置 木马服务器 哈希值 win10 客…

协同过滤推荐算法UserCF、ItemCF

目录 相似度计算基于用户的协同过滤(UserCF)算法评估基于物品的协同过滤(ItemCF)协同过滤算法的权重改进协同过滤算法的问题分析思考学习参考 相似度计算 杰卡德(Jaccard)相似系数 Jaccard 系数是衡量两个…

AMD推出锐龙Threadripper 7000处理器 96核重回HEDT市场

AMD今天正式推出了锐龙Threadripper 7000系列处理器,而且这次不光只有面向工作站的锐龙Threadripper PRO 7000WX系列,还有面向HEDT平台的锐龙Threadripper 7000X系列。 上一代的锐龙Threadripper PRO 5000是去年年初推出的,相隔已经有一年半…

一次说全COLA应用架构

一,为什么需要好的应用架构 上图比较清晰地说明了好的应用架构的作用——去繁为简,化无序为有序。 二,关于COLA的几种定义 1,原版 GitHub - alibaba/COLA: 🥤 COLA: Clean Object-oriented & Layered Architec…

【Linux】文件IO基础知识——上篇,文件描述符是什么??系统缓冲区又是啥??

目录 前文 一, 系统级——文件操作接口 a. open b. close c. write d. read 二,接口理解 那文件描述符——fd是什么呢? 三,文件描述符分配规则 原理 四,重定向——dup2 简易shell——重定向 五&#xff0c…