Python 使用matplotlib中的滑块更新条形图
我试着制作一个简单的条形图,在这里我可以使用一个滑块来监控化学反应(a->B)。 到目前为止,下面的代码生成了一个带有反应步骤滑块的条形图。打印功能打印特定反应步骤后的预期值。但是,绘图将不会更新。我试过Python 使用matplotlib中的滑块更新条形图,python,matplotlib,Python,Matplotlib,我试着制作一个简单的条形图,在这里我可以使用一个滑块来监控化学反应(a->B)。 到目前为止,下面的代码生成了一个带有反应步骤滑块的条形图。打印功能打印特定反应步骤后的预期值。但是,绘图将不会更新。我试过plt.draw(),plt.show()和fig.canvas.draw(),但都不起作用 import matplotlib.pyplot as plt import numpy as np from matplotlib.widgets import Slider, Button fig
plt.draw()
,plt.show()
和fig.canvas.draw()
,但都不起作用
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.widgets import Slider, Button
fig, ax = plt.subplots()
plt.subplots_adjust(bottom=0.25)
fig.canvas.set_window_title('Einfluss der Geschwindigkeitskonstanten')
a0 = 1
b0 = 0
plt.axis([0, 5, 0, 2])
plt.xticks([1, 4], ['A', 'B'])
plt.bar(1, a0, color = 'red')
#slider:
axcolor = 'lightblue'
axrs = plt.axes([0.25, 0.1, 0.65, 0.03], facecolor=axcolor)
srs = Slider(axrs, 'RS', 0, 20, valinit=0)
def slider_val_fkt(t):
ya = []
t = srs.val
ya = [np.exp(-0.6 * t)]
print(ya)
plt.bar(1, ya, color = 'red')
#plt.draw()
#plt.show()
fig.canvas.draw()
srs.on_changed(slider_val_fkt)
plt.show()
将在滑块轴(而不是原始轴)内部绘制新条: 要克服这一问题,您应该处理轴对象,而不是使用pyplot。但是,由于您无论如何都希望更新条形图,而不是绘制新条形图,因此在此处使用条形图本身并使用
set\u height
进行更新就足够了
bars = plt.bar(1, a0, color = 'red')
axrs = plt.axes([0.25, 0.1, 0.65, 0.03], facecolor='lightblue')
srs = Slider(axrs, 'RS', 0, 20, valinit=0)
def slider_val_fkt(t):
t = srs.val
ya = [np.exp(-0.6 * t)]
bars[0].set_height(ya[0])
fig.canvas.draw_idle()
srs.on_changed(slider_val_fkt)