使用plt.scatter()绘制逻辑斯蒂映射散点图时遇参数缺失错误求助
使用plt.scatter()绘制逻辑斯蒂映射散点图时遇参数缺失错误求助
嘿,这个问题其实很好解决!你遇到的TypeError是因为plt.scatter()必须同时传入x轴和y轴两组数据,你现在只给了allys这一组,自然会提示缺少y参数啦。
咱们来看你的代码逻辑:你在遍历不同的r值,计算每个r对应的稳态y值(也就是跳过前960次迭代后的y),但你只把这些y值存到了allys里,却没保存每个y对应的r值——而逻辑斯蒂映射的分岔图,正是要把r作为x轴,对应的稳态y作为y轴来绘制的呀!
那修改方法很简单,只要加一个列表来存对应的r值就行:
- 先新建一个列表
allrs,用来存储每个稳态y对应的r值 - 在你把
y加入allys的同时,把当前的r也加入allrs - 调用
scatter的时候,把allrs作为x参数,allys作为y参数
修改后的完整代码如下:
import numpy as np import matplotlib.pyplot as plt allys = [] allrs = [] # 新增:存储每个y对应的r值 for r in np.arange(0.001, 4, 0.001): y = np.random.rand() for t in range(1000): y = r * y * (1 - y) if t > 959: allys.append(y) allrs.append(r) # 同步添加对应的r值 plt.scatter(allrs, allys, color='black', s=1) # 传入x和y两组数据 plt.xticks(np.arange(0, 4, 0.5)) plt.xlabel('r') plt.ylabel('Steady-state y') plt.title('Logistic Map Bifurcation Diagram') plt.show()
这样运行后,你就能得到标准的逻辑斯蒂映射分岔图啦!本质就是每个点的x是控制参数r,y是该r下系统稳定后的输出值,这样散点图才能正确展示不同r对应的系统行为。
备注:内容来源于stack exchange,提问作者magicgenie
相关产品推荐
相关产品推荐

