Matplotlib问题求助:随机漫步代码,各位路过的大神帮忙一下!

在尝试运行《Python编程:从入门到实践》中的随机漫步代码时,无论是在PyCharm、CMD还是Spyder环境下,都无法显示图形。已确保代码与书本一致,且所需库已安装。尝试过网上多种解决方案,但只得到命令行返回信息,而无法看到预期的散点图。其他类型的图形如直方图可以正常显示,唯独随机漫步图形出现问题。寻求帮助以解决这个问题。

按照《Python编程:从入门到实践》一书中随机漫步章节的代码一字不差的编写,先后用pycharm、cmd、spyder进行运行,既不报错也不出结果。
先创建了一个名为“random_walk.py"的文件,代码如下:

from random import choice


class RandomWalk():
    """一个生成随机漫步数据的类"""

    def __init__(self, num_points=5000):
        """初始化随机漫步的属性"""
        self.num_points = num_points

        # 所有随机漫步都始于(0,0),存储x y值的列表
        self.x_values = [0]
        self.y_values = [0]

    # 生成漫步包含的点,并决定每次漫步的方向
    def fill_walk(self):
        # 不断漫步,直到列表达到指定的长度
        while len(self.x_values) < self.num_points:
            # 决定前进方向,向右1,左-1
            x_direction = choice([1, -1])
            # 以及沿这个方向前进的距离,0-4之间的随机整数,含0表示能沿y轴移动
            x_distance = choice([0, 1, 2, 3, 4])
            # 正则为向右,负为向左
            x_step = x_direction * x_distance

            y_direction = choice([1, -1])
            y_distance = choice([0, 1, 2, 3, 4])
            y_step = y_direction * y_distance

            # 拒绝原地踏步
            if x_step == 0 and y_step == 0:
                continue

        # 计算下一个点的x y值
        next_x = self.x_values[-1] + x_step
        next_y = self.y_values[-1] + y_step

        # 附加到列表中
        self.x_values.append(next_x)
        self.y_values.append(next_y)

随后又创建了名为“rw_walk.py”的文件,来调用上面的模块,代码如下:

import matplotlib.pyplot as plt
from random_walk import RandomWalk

# 创建一个RandomWalk实例,并将其包含的所有点绘制出来
rw = RandomWalk()
rw.fill_walk()

plt.scatter(rw.x_values, rw.y_values, s=15)
plt.show()

所有的代码都与书中无异,该装的包也都安装了,网上不少方法也都试过了,运行之后只出现:C:\Users\Administrator\AppData\Local\Programs\Python\Python37\python.exe C:/Users/Administrator/Desktop/study/Python_exercises/daily_exercises/rw_walk.py,不会显示图形,而同等条件下别的散点图、直方图都可以正常运行,只有这个不行,求大神帮忙解决!

评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值