编程语言
首页 > 编程语言> > Python用pygal.XY实现随机漫步

Python用pygal.XY实现随机漫步

作者:互联网

一、pygal.XY类实现绘制数据点的例子(来自官网)

我们重点关注add里面的参数,第一个参数是一个字符串,比如'A',这是我们数据点的标签。第二个参数是一个列表,列表里的每个元素都是一个元组,每个元组里存放了一个点的横纵坐标。

二、用pygal.XY类绘制随机漫步图

randomwalk.py

from random import choice

class Randomwalk():
    '''生成随机漫步数据的类'''
    def __init__(self,num_points=5000):
        self.num_points=num_points
        #我们需要生成5000个随机漫步点

        self.x_values=[0]
        self.y_values=[0]
        #随机漫步从0,0出发,上面两个列表分别存放所有点的横坐标和纵坐标

    def fill_walk(self):
        '''计算随机漫步包含的所有点'''
        while len(self.x_values)<self.num_points:
            #不断漫步,直到得到5000个点
            x_step=self.get_step()
            y_step=self.get_step()

            if x_step==0 and y_step==0:
                continue
                #拒绝原地踏步
            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)
            #把新计算出的点加入到列表当中

    def get_step(self):
        '''计算出每次移动的步长'''
        direction=choice([1,-1])
        distance=choice([0,1,2,3,4])
        step=direction*distance
        #正负不同,漫步的方向就留不同
        return step

rw_pygal.py

from randomwalk import Randomwalk
import pygal

rw=Randomwalk()
#实例化随机漫步类
rw.fill_walk()
#调用fill_walk方法,生成5000个点的横坐标以及纵坐标
points=list(zip(rw.x_values,rw.y_values))
#我们用内置函数zip生成横坐标和纵坐标一一对应的映射,
# 再把得到的迭代器转化为列表,这样就可以直接做add方法的第二个参数了
xy_chart=pygal.XY(stroke=False)
#实例化XY类,参数stroke=False说明我们不需要绘制折线,只要点
xy_chart.add('randomwalk',points)
#把点的标签,横纵坐标设置好
xy_chart.title='Randomwalk'
#把我们图表的标题设置好
xy_chart.render_to_file('r.svg')
#把图表保存为svg文件

以下为我得到的随机漫步图:

标签:rw,漫步,Python,self,XY,随机,pygal
来源: https://blog.csdn.net/weixin_44520259/article/details/89853531