python之matplotlib.pyplot迭代累积绘制曲线问题及解决办法

查阅资料及他人提醒,发现pyplot在循环语句下重复绘制图形时,每次都会迭代绘制使得前面绘制过的曲线累积在新绘制图中,而不是如我们所想单独绘制。

问题来源:python之随机漫步模拟

解决方法:在绘图命令前加pyplot.cla()清除上一个坐标轴或者pyplot.close()直接关闭上一个图表重新制图

更改后:

from random import choice as choice
import matplotlib.pyplot as plt
for i in range(10):

    class RandomWalk():   
        def __init__(self,num_points=5000):
            self.num_points = num_points
            self.x_values = [0]  
            self.y_values = [0] 

        def fill_walk(self):
            while len(self.x_values) < self.num_points:
                x_direction = choice([-3, 3])
                x_distance = choice([0, 1, 2, 3, 4])
                x_step = x_direction * x_distance

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

                if x_step == 0 and y_step == 0:
                    continue

                #self.x_values[-1]表示上一步的最后位置,正如其含义,下一步=上一次的最后位置+这次的步长变化
                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)

    plt.cla()
    rw = RandomWalk()
    rw.fill_walk()
    plt.scatter(rw.x_values,rw.y_values,s=5,edgecolor='none')  
    plt.savefig("C:/Users/28654/Desktop/Matplotlib Datas/picture"+str(i+1))

结果:
在这里插入图片描述
补充:

cla()    #clear axes
clf()    #clear figure
close()  #close the figure window

详见matplotlib.pyplot中cla()、clf()、close()区别详解

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值