如何在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子图上,实现和Matlabhold on完全一致的叠加效果。 - 实时更新:每次绘制后调用
plt.draw(),确保新点立刻显示在图表上。
内容的提问来源于stack exchange,提问作者chrisis
相关产品推荐
相关产品推荐

