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

使用plt.figure(figsize)绘制Logistic Map轨道图时生成多幅图,如何修复?

问题原因与解决方法

你生成多幅图的核心原因是把创建画布的plt.figure(figsize=(5,5))放在了for r的循环内部——每次循环都会新建一个空白画布,对应200个r值就会生成200个独立图,自然和预期的单幅轨道图不符。

修正后的代码如下:

import numpy as np
import matplotlib.pyplot as plt

def f(x, r):
    return r*x*(1 - x);

x0 = 0.8
n = np.arange(0,5000)
# 把创建画布的代码移到循环外,只初始化一次画布
plt.figure(figsize=(8, 5))  # 可根据需求调整尺寸

for r in np.linspace(3.4, 4, 200):
    xi = np.zeros(np.shape(n))
    xi[0] = x0
    for i in n:
        if i != 0:
            xi[i] = f(xi[i - 1], r)

    y = xi[1000:5000] # 忽略暂态效应
    plt.plot(r*np.ones(np.shape(y)), y, '.k', markersize=0.08)

# 所有数据绘制完成后,统一设置标签和标题
plt.xlabel("r")
plt.ylabel("x")
plt.title("Orbit Diagram - Logistic Map")
plt.show()

可选优化建议

  • 内层循环可以简化写法,提升运行效率:
    xi = np.zeros(len(n))
    xi[0] = x0
    for i in range(1, len(n)):
        xi[i] = f(xi[i-1], r)
    
  • 若觉得图中点过于密集,可减少np.linspace(3.4,4,200)的点数(比如改成100),或适当调大markersize数值。

内容的提问来源于stack exchange,提问作者A. Mukherjee

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 15:30:03