python绘图-多条曲线绘制在一张图共享横坐标

 

场 景:

两个csv文件,保存了一些数据,第一列为时间,想要得到其他列的量随着时间的变化曲线。

 

import json
import pandas as pd
import os
import matplotlib.pyplot as plt

"""
https://blog.csdn.net/weixin_45683963/article/details/106967614
https://www.jianshu.com/p/c41ac57cea33
"""

if __name__ == '__main__':
    OneFile = " data1.csv"
    otherFile = " data2.csv"
    # print(1234567);
    OneFileData = pd.read_csv(OneFile)
    otherFileData = pd.read_csv(otherFile)
    OneFileData.info()  # 输出读入的csv数据的基本信息
    otherFileData.info()

    listKeys = []  # 将需要绘制的列的名字放到list里面
    listKeys.append('price')
    listKeys.append('quantity')
    xLabelVar = 'time'  # 固定横坐标为第一列

    figurreNumber = 0
    for key in listKeys:
        # print(key)
        plt.figure(figurreNumber)  #新建一个pic,  https://blog.csdn.net/haikuotiankong7/article/details/90551841
        figurreNumber = figurreNumber + 1
        checkedVlaueName = key
        plt.plot(OneFileData[xLabelVar], OneFileData[checkedVlaueName], '-r', label="One")
        plt.plot(otherFileData[xLabelVar], otherFileData[checkedVlaueName], '--b', label="other")

        plt.title("My title")
        plt.ylabel(checkedVlaueName)
        plt.xlabel(xLabelVar)
        plt.grid()  # 生成网格
        plt.legend()  # 显示legend
        #plt.show() # 逐个显示一个图形,点击关闭后继续显示另一个
    plt.show()  # 将所有的图形一下显示出来

 

依据提供的文档中的公式来解析这个问题: 给定的归一化色散方程为 \(b(V)\),其定义与变量\(V\) 和模式序号\(m\)相关,具体表达式如下: \[ \text{对于} \; TE \; \text{和} \; TM \; \text{模式},\] \[ b = 2 - \frac{1}{V^2},\] \[ \text{其中}\; m = \frac{2}{\pi} \left(\arctan{\left(\frac{c_p}{k} \right)} + \arctan{\left(\frac{c_q}{k} \right)}\right),\] 然而,在实际计算过程中我们将使用近似形式: \[ \text{当} \; b \neq 0: \arctan(m \cdot c_b) + \arctan(m \cdot c_b) = \frac{\pi}{2} \cdot m,\] \[ 这里需要指出的是该等式的表述可能有误或需进一步澄清以适应正确物理模型。\] 为了简化问题并基于上述信息生成Python代码,我们假设一个简化的公式用于\(b\)作为\(V\)的函数,并且考虑到模式\(m\)的影响: 下面提供了一个简单的Python脚本示例,用于创建这些曲线的可视化表示。请注意,此脚本使用了matplotlib进行绘图。 ```python import numpy as np import matplotlib.pyplot as plt def b_of_v(v, m): """简化后的b关于V的函数""" return 2 - m**2 / v**2 v = np.linspace(1, 5, 400) fig, ax = plt.subplots() for m in range(1, 8): # m从1到7 label = f'TE/TM, m={m}' ax.plot(v, b_of_v(v, m=m), label=label) ax.set_xlabel('V') ax.set_ylabel('b') ax.legend() plt.show() ``` 注意:以上脚本中的`b_of_v`函数是基于题目要求以及材料中给出的信息进行了合理的猜测与简化,请根据实际情况调整公式细节。在真实的科研环境中应该根据具体的物理学理论或者实验数据来精确确定这个关系。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

First Snowflakes

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值