期货老许 2025-02-12 00:16 采纳率: 66.7%
浏览 6
已结题

matplotlib动态图

我在pycharm中每间隔12秒获取两个数据,现需要做成matplotlib动态图,来分析两个数据的相关性
while True:

if  间隔12秒更新
    print(y1,y2)
  • 写回答

3条回答 默认 最新

  • 道友老李 JWE233286一种基于机器视觉的水表指针读数识别及修正的方法 专利发明者 2025-02-12 00:16
    关注
    让【道友老李】来帮你解答,本回答参考gpt编写,并整理提供,如果还有疑问可以点击头像关注私信或评论。
    如果答案让您满意,请采纳、关注,非常感谢!
    为了在 PyCharm 中使用 Matplotlib 创建一个动态更新的图形,以分析两个数据的相关性,我们可以按照以下步骤来实现。下面是一个完整的代码示例,该代码每隔 12 秒获取两个数据并更新图形。

    步骤

    1. 导入必要的库:我们需要 matplotlib.pyplotnumpy 来处理图形和生成模拟数据。
    2. 设置数据存储:使用列表保存获取的两个数据。
    3. 创建动态图形:使用 Matplotlib 的 FuncAnimation 函数来实现动态图形。
    4. 实现数据更新:每隔 12 秒获取新的数据并更新图形。

    代码示例

    import numpy as np
    import matplotlib.pyplot as plt
    from matplotlib.animation import FuncAnimation
    import time
    # 初始化数据列表
    y1_data = []
    y2_data = []
    # 创建绘图
    fig, ax = plt.subplots()
    line1, = ax.plot([], [], label='Data 1', color='blue')
    line2, = ax.plot([], [], label='Data 2', color='orange')
    ax.set_xlim(0, 50)  # x轴范围
    ax.set_ylim(-10, 10)  # y轴范围
    ax.legend()
    ax.set_title('Dynamic Data Visualization')
    ax.set_xlabel('Time (s)')
    ax.set_ylabel('Values')
    # 定义更新函数
    def update(frame):
        # 模拟获取新的数据
        y1 = np.random.uniform(-10, 10)  # 随机生成 y1 数据
        y2 = np.random.uniform(-10, 10)  # 随机生成 y2 数据
        
        # 将新数据添加到数据列表
        y1_data.append(y1)
        y2_data.append(y2)
        # 更新线条数据
        line1.set_data(range(len(y1_data)), y1_data)
        line2.set_data(range(len(y2_data)), y2_data)
        
        return line1, line2
    # 启动动画
    ani = FuncAnimation(fig, update, interval=12000)  # 每隔12000毫秒(12秒)
    plt.show()
    

    代码解析

    1. Import Libraries: 导入所需的库。
    2. Data Initialization: 初始化两个空列表 y1_datay2_data 用于存储获取的数据。
    3. Figure Setup: 使用 plt.subplots() 创建一个图形和坐标轴,并设置图形的标题和标签。
    4. Update Function: 定义 update 函数,每次调用时模拟获取两个新数据,并更新图形的线条数据。
    5. Animation Setup: 使用 FuncAnimation 来定时调用 update 函数,设置间隔为 12000 毫秒,以每 12 秒更新一次数据。
    6. Display the Plot: 使用 plt.show() 显示动态图形。

    注意事项

    • 在真实应用中,你需要替换数据生成部分,按照你的需求每 12 秒获取实际数据。
    • 根据实际数据范围适当调整 ax.set_ylim() 的值,以确保数据在视图中可见。

    示例输出

    在执行代码后,程序将启动一个窗口,并每隔 12 秒更新显示两个随机数的折线图,你会看到这两个数据随时间的变化趋势。通过观察图形,你可以分析这两个数据的相关性。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
    1人已打赏
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 2月20日
  • 已采纳回答 2月12日
  • 创建了问题 2月12日