matplotlib在同一坐标系上绘制多条曲线 及在多个子图上绘图

本教程涵盖Docker/Kubernetes云原生技术、大数据架构、分布式微服务等内容,旨在提升学员的技术竞争力。课程包括Linux环境熟悉、Docker及Kubernetes实践、Helm应用部署等,适合希望进入大型互联网公司工作的技术人员。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

进大厂,身价翻倍的法宝来了!

主讲内容:docker/kubernetes 云原生技术,大数据架构,分布式微服务,自动化测试、运维。

腾讯课堂:点击进入
网易课堂:点击进入

7月1号-7月29号 8折优惠!!!
7月1号-7月29号 8折优惠!!!
7月1号-7月29号 8折优惠!!!

课程简介:

第一章 熟悉Linux环境
1、Win10安装Ubuntu18.04双系统
2、熟悉Linux常用工具和命令
第二章 熟悉Docker
3、安装配置Docker
4、Docker命令实践
5、Dockerfile文件编写
​​​​​​​ 6、常用镜像部署
​​​​​​​ 第三章 熟悉Kubernetes
​​​​​​​ 7、kubernetes架构和部署
​​​​​​​ 8、熟悉kubectl命令使用
​​​​​​​ 9、k8s应用部署实践(上)
​​​​​​​ 10、k8s应用部署实践(下)
​​​​​​​ 第四章 熟悉Helm
​​​​​​​ 11、Helm安装配置
​​​​​​​ 12、熟悉Helm应用书写规则
​​​​​​​ 13、编写自己的Helm应用

(作者:陈玓玏)

用matplotlib画图时,常常需要实现两类功能,一类是在一个坐标轴上画多条曲线,能够清楚地看到多条曲线的对比情况。另一种情况是在同一个窗口的不同子图上画图,多用于呈现不同内容的曲线,没有对比关系的曲线图。其实根本区别在于,是在同一对坐标轴上画图,还是在不同的坐标轴上画图。

一、同一坐标系上绘制多条曲线

首先自然是引入matplotlib包,这个包可以画散点图、线图、柱形图等等,是很好的数据可视化工具。其他的不多说,看注释。

import matplotlib.pyplot as plt
import numpy as np
#开启一个窗口,num设置子图数量,figsize设置窗口大小,dpi设置分辨率
fig = plt.figure(num=1, figsize=(15, 8),dpi=80) 
#直接用plt.plot画图,第一个参数是表示横轴的序列,第二个参数是表示纵轴的序列   
plt.plot(np.arange(0,1,0.1),range(0,10,1))
plt.plot(np.arange(0,1,0.1),range(0,20,2))
#显示绘图结果
plt.show()

二、在不同子图上绘图

import matplotlib.pyplot as plt
import numpy as np
#开启一个窗口,num设置子图数量,这里如果在add_subplot里写了子图数量,num设置多少就没影响了
#figsize设置窗口大小,dpi设置分辨率
fig = plt.figure(num=2, figsize=(15, 8),dpi=80)
#使用add_subplot在窗口加子图,其本质就是添加坐标系
#三个参数分别为:行数,列数,本子图是所有子图中的第几个,最后一个参数设置错了子图可能发生重叠
ax1 = fig.add_subplot(2,1,1)  
ax2 = fig.add_subplot(2,1,2)
#绘制曲线 
ax1.plot(np.arange(0,1,0.1),range(0,10,1),color='g')
#同理,在同一个坐标系ax1上绘图,可以在ax1坐标系上画两条曲线,实现跟上一段代码一样的效果
ax1.plot(np.arange(0,1,0.1),range(0,20,2),color='b')
#在第二个子图上画图
ax2.plot(np.arange(0,1,0.1),range(0,20,2),color='r')
plt.show()
 

画图在进行模型评估时很常用,在进行变量评估时也可以用,能够提前查看变量的分布情况,也可以查看模型预测结果的AUC曲线和KS曲线。

### 如何在Abaqus中在同一绘制多条曲线 为了在同一绘制多条曲线,在Abaqus中的操作可以遵循特定的命令流和脚本编写方法。虽然直接通过GUI界面也可以实现这一功能,但使用Python脚本来控制往往更加灵活高效。 对于希望在同一坐标系下展示个数据集的情况,比如不同时间步的结果或是不同的物理量变化趋势,可以通过`odbAccess`模块读取ODB文件的数据,并借助matplotlib库来完成绘图工作[^1]。下面是一个简单的例子: ```python from odbAccess import * import matplotlib.pyplot as plt # 打开OBD文件 odb = openOdb(path='your_model.odb') # 获取所需frame对象以及场输出FieldOutput对象 frames = odb.steps['Step-1'].frames field_outputs_1 = frames[-1].fieldOutputs['U'] # 假设这里获取的是位移场输出 field_outputs_2 = frames[0].fieldOutputs['S'] # 这里假设是应力场输出 # 提取节点或积分点上的具体数值 values_U = field_outputs_1.values values_S = field_outputs_2.values # 准备用于绘图的数据列 data_x = [] data_y1 = [] # 存储第一个变量随位置的变化情况 data_y2 = [] # 存储第二个变量随位置的变化情况 for value in values_U: data_x.append(value.nodeLabel) # 使用节点编号作为横轴 data_y1.append(abs(value.data[0])) # 绝对值处理后的X方向位移分量 for value in values_S: data_y2.append(max(abs(v) for v in value.data)) # 应力的最大绝对值 plt.figure(figsize=(8,6)) plt.plot(data_x, data_y1, label="Displacement", linestyle='-') plt.plot(data_x, data_y2, label="Stress", linestyle=':') plt.xlabel('Node Label') plt.ylabel('Magnitude') plt.title('Comparison of Displacements and Stresses along Nodes') plt.legend() plt.show() ``` 上述代码片段展示了如何从Abaqus ODB文件中提取两个不同类型(位移和应力)的数据序列,并将它们同一上。注意这里的线条样式分别设置成了实线(`'-'`)和虚线(`':'`)以便区分两种类型的曲线
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值