Matplotlib打印出正确数据列表但无法正常渲染绘图结果求助
问题原因
你代码的错误出在plt.plot()的调用顺序错误:你在dev_x、dev_y两个列表还处于空值状态时就提前执行了绘图指令,后续向列表追加的坐标数据不会自动同步到已创建的绘图对象中,因此最终plt.show()渲染的是空数据的画布,看不到折线。
修复方法
- 删除位于
dev_x = []、dev_y = []定义语句下方的plt.plot(dev_x, dev_y)代码行 - 将
plt.plot(dev_x, dev_y)移动到while循环结束后、plt.show()执行前的位置,确保绘图时已经拿到了完整的坐标数据。
修复后完整代码
from matplotlib import pyplot as plt number = 14 count = 0 dev_x = [] dev_y = [] while number != 1: if(number % 2 == 0): _number = number / 2 number = _number print(number) dev_y.append(int(number)) dev_x.append(int(count)) count = count + 1 else: _number = number * 3 + 1 number = _number print(number) dev_y.append(int(number)) dev_x.append(int(count)) count = count + 1 print(count) else: count = count + 1 print(dev_x) print(dev_y) # 移动到此处调用plot,此时列表已有完整数据 plt.plot(dev_x, dev_y) plt.show() print("DONE")
内容的提问来源于stack exchange,提问作者robinnlmn
相关产品推荐
相关产品推荐

