使用Matplotlib绘制一维线性映射坐标无显示问题排查求助
排查Matplotlib绘图无坐标点的问题
嘿,我帮你找出了代码里几个导致没显示坐标点的关键问题,咱们一个个拆解:
问题1:循环完全没执行
你初始化result = [10]后把第一个元素改成1,此时len(result)是1,len(result)-1等于0,range(0)是空序列,所以for循环的代码块根本没运行,result里始终只有一个值,没法和包含10个元素的x数组对应。
问题2:绘图参数错误
你写的plt.plot(x, result[i], 'ro')有两个问题:
- 循环没执行的情况下,变量
i根本没被定义(能运行可能是代码被截断了?) - 就算
i有值,result[i]是单个数值,而x是10个元素的数组,Matplotlib无法匹配两者的长度来绘制多点。你需要传入整个result数组,让每个x对应一个y值。
问题3:缺少图像显示指令
你的代码最后截断了,但大概率没加plt.show()——这是Matplotlib显示图像的关键步骤,没加的话图像会在后台生成但不会弹出窗口。
修正后的完整代码
import matplotlib.pyplot as plt import numpy as np # 初始化result,第一个值设为1 result = [1] a = 1.1 # 生成10个x轴坐标点 x = np.linspace(0, 10, 10) # 循环生成对应x长度的映射值 for i in range(len(x)-1): # 计算下一个线性映射值 next_val = a * (result[i] - 1/2) + 1/2 result.append(next_val) # 绘制红色圆点,x和result一一对应 plt.plot(x, result, 'ro') plt.xlim(0, 10) plt.ylim(0, 10) # 补全坐标轴绘制代码 plt.axhline(0, color='b', linewidth=1) plt.axvline(0, color='b', linewidth=1) # 显示图像 plt.show()
这段代码会生成10个对应线性映射的坐标点,并用红色圆点显示在图上,同时显示完整的坐标轴。
内容的提问来源于stack exchange,提问作者S.Ky
相关产品推荐
相关产品推荐

