numpy 如何在Python图表中手动绘制点(在Matlab中保持函数)

hzbexzde  于 2023-05-29  发布在  Python
关注(0)|答案(2)|浏览(177)

我想在python图表中手动绘制点。这应该是Matlab中的hold on函数。
MWE

#-- Input values
time = 3
tau_1= 0.5
tau_2= 0.02
#-- Plot
fig = plt.figure()
plt.plot(time, tau_1, "--mo")
plt.plot(time, tau_2, "--co" )
plt.ylabel("tau",color="black",fontsize=14)
plt.xlabel("time", fontsize=14) 
plt.grid() 

#-- Change the Input manually after seeing the results

Python应该在同一个图表中绘制每次手动更改输入时的输入值。我想强调的是,我特别想要这个解决方案,用户运行程序,并手动更改输入值

eit6fx6z

eit6fx6z1#

编辑:我在之前的回答中误解了你的问题。看起来您希望通过更改输入来反复运行相同的代码,而不是在脚本中重新编写新的输入。
一种方法是将绘制的图形保存到pickle文件。然后将其解嵌以绘制新输入。

import os
import pickle
import matplotlib.pyplot as plt

#-- Input values
time = 2
tau_1= 0.8
tau_2= 0.03

# If replotting, use the saved figure
if os.path.isfile('myplot.pickle'):
    with open('myplot.pickle', 'rb') as f:
        fig, ax = pickle.load(f)
        print('here')
else:  # Create a new one
    fig, ax = plt.subplots()

ax.plot(time, tau_1, "--mo")
ax.plot(time, tau_2, "--co" )
ax.set_ylabel("tau",color="black",fontsize=14)
ax.set_xlabel("time", fontsize=14) 
ax.grid()

# Save the plotted figure and axes to a pickle file
with open('myplot.pickle', 'wb') as f:
    pickle.dump((fig, ax), f)

继续更改顶部的输入值,然后再次运行。它将绘制为相同的图形。

jm81lzqq

jm81lzqq2#

这其实很简单:避免创建新图形

import matplotlib.pyplot as plt
#-- Input values
time = 3
tau_1= 0.5
tau_2= 0.02
#-- Plot
fig = plt.figure()
ax = plt.gca()  # reference to chart

ax.plot(time, tau_1, "--mo")
ax.plot(time, tau_2, "--co" )
ax.set_ylabel("tau",color="black",fontsize=14)
ax.set_xlabel("time", fontsize=14) 
ax.grid() 

#-- New Input, added manually after seeing the results
time = 2
tau_1= 0.8
tau_2= 0.01

#-- Plot
# line with new figure removed
ax.plot(time, tau_1, "--mo")
ax.plot(time, tau_2, "--co" )
ax.set_ylabel("tau",color="black",fontsize=14)
ax.set_xlabel("time", fontsize=14) 
ax.grid()

相关问题