为了账号安全,请及时绑定邮箱和手机立即绑定

在 Python 中更改蛛网图的 r 值

在 Python 中更改蛛网图的 r 值

吃鸡游戏 2023-02-07 14:29:27
Matplotlib 相对较新。我绘制了一个蜘蛛网图,现在希望在程序运行时通过箭头键更改 r 值。尝试将“导入键盘”与“运行循环”一起使用,但它似乎不起作用。有人可以解释一下吗?import matplotlib.pyplot as pltimport keyboardfrom scipy import linspacer = 3.35x0 = 0.3running = Truedef cobweb(f, x0):    t = linspace(0, 1, 100)    l = plt.plot(t, f(t))    plt.plot(t, t)    x, y = x0, f(x0)    for _ in range(100):        fy = f(y)        plt.plot([x, y], [y, y], 'b', linewidth=1)        plt.plot([y, y], [y, fy], 'b', linewidth=1)        x, y = y, fy    plt.xlabel("X n")    plt.ylabel("X n+1")    plt.show()    plt.close()while running:    cobweb(lambda x: r * x * (1 - x), x0)    if keyboard.is_pressed('up'):        r += 0.1    if keyboard.is_pressed('down'):        r -= 0.1    cobweb(lambda x: r * x * (1 - x), x0)
查看完整描述

1 回答

?
跃然一笑

TA贡献1826条经验 获得超6个赞

您需要打开交互模式plt.ion()替换plt.show()fig.canvas.draw()。检查以下代码:

import matplotlib.pyplot as plt

import keyboard

# from scipy import linspace

from numpy import linspace

import time


r = 3.35

x0 = 0.3

running = True



def cobweb(f, x0):

    ax.cla()

    t = linspace(0, 1, 100)

    l = plt.plot(t, f(t))

    plt.plot(t, t)


    x, y = x0, f(x0)

    for _ in range(100):

        fy = f(y)

        plt.plot([x, y], [y, y], 'b', linewidth=1)

        plt.plot([y, y], [y, fy], 'b', linewidth=1)

        x, y = y, fy


    plt.xlabel("X n")

    plt.ylabel("X n+1")

    fig.canvas.draw()

    time.sleep(0.01)


plt.ion()

fig, ax = plt.subplots()


while running:

    if keyboard.is_pressed('up'):

        r += 0.1

    if keyboard.is_pressed('down'):

        r -= 0.1

    cobweb(lambda x: r*x*(1 - x), x0)

,您将得到如下图:

//img1.sycdn.imooc.com//63e1f11600010a6c05690851.jpg

注意:如果您使用linspaceby scipy,您会收到此警告:

DeprecationWarning: scipy.linspace is deprecated and will be removed in SciPy 2.0.0, use numpy.linspace instead

明智的做法是将其替换为

from numpy import linspace

正如我在上面的代码中所做的那样。您的代码的功能不会改变


查看完整回答
反对 回复 2023-02-07
  • 1 回答
  • 0 关注
  • 125 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信