You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python图表中手动绘制点(模拟Matlab的hold on功能)

在Python中实现类似Matlab hold on 的手动绘图功能

要实现运行程序后手动修改输入值,新数据点叠加绘制在同一张图表上的效果,核心是利用Matplotlib的交互模式,让图表持续保持并支持实时更新。以下是满足需求的最小工作示例:

import matplotlib.pyplot as plt

# 初始化图表(仅创建一次,后续绘图都在这张图上)
fig, ax = plt.subplots()
ax.set_ylabel("tau", color="black", fontsize=14)
ax.set_xlabel("time", fontsize=14)
ax.grid(True)

# 开启交互模式,允许图表实时更新且不阻塞程序
plt.ion()

while True:
    # 接收用户手动输入,支持随时修改参数
    user_input = input("请输入 time, tau_1, tau_2(输入 q 退出程序):")
    if user_input.lower() == 'q':
        break
    
    try:
        # 解析输入的三个数值
        time_val, tau1_val, tau2_val = map(float, user_input.split(','))
        # 在同一张图上叠加绘制新点
        ax.plot(time_val, tau1_val, "--mo")
        ax.plot(time_val, tau2_val, "--co")
        plt.draw()  # 立即更新图表显示新点
    except ValueError:
        print("输入格式错误,请按 数值,数值,数值 的格式输入,例如:3,0.5,0.02")

# 关闭交互模式,保持图表直到手动关闭
plt.ioff()
plt.show()

关键说明:

  • plt.ion():开启交互模式,让程序在运行过程中可以实时更新图表,不会因为plt.show()卡住程序。
  • 循环输入:通过while True持续接收用户输入,直到输入q主动退出,完美适配"运行后手动修改输入"的需求。
  • 叠加绘图:所有新的点都绘制在初始化时创建的ax子图上,实现和Matlab hold on完全一致的叠加效果。
  • 实时更新:每次绘制后调用plt.draw(),确保新点立刻显示在图表上。

内容的提问来源于stack exchange,提问作者chrisis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 18:22:55