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