Python 随机漫步学习总结

1、修改标签文字和线条粗细

#设置图表标题,并给坐标轴加上标签
plt.title("Random Walk", fontsize=24)
plt.xlabel("x_values", fontsize=15)
plt.ylabel("y_values", fontsize=15)
#设置刻度标记的大小
plt.tick_params(axis='both', labelsize=14)

2、绘制折线图以及散点图

折线图

输入两个列表分别作为折线图的横坐标和纵坐标,c为RGB颜色表示法

plt.plot(rw.x_values, rw.y_values, c=(0, 0, 0.8), linewidth=1)

散点图

两个列表、c同上折线图的表示

区别在于散点图可以采用颜色映射,c作为一个列表输入,cmap指定映射的颜色,进行渐变颜色的映射

edgecolors指定点的边缘是否有颜色,s为点的大小

plt.scatter(rw.x_values, rw.y_values, c=point_numbers, cmap=plt.cm.Reds,
            edgecolors='none', s=10) 

也可以直接描绘两个点,如起点和终点

plt.scatter(0, 0, c='green', s=150)
plt.scatter(rw.x_values[-1], rw.y_values[-1], c='blue', s=150)

3、隐藏坐标轴

plt.axes().get_xaxis().set_visible(False)
plt.axes().get_yaxis().set_visible(False)

4、保存图片

savefig()必须在show()之前,否则得到的是空白图片

plt.savefig('random_walk.png', bbbox_inches='tight')

5、调整尺寸

plt.figure(dpi=128, figsize=(10, 6))

 

6、最后附上代码

random_walk.py

from random import choice


class RandomWalk:
    def __init__(self, num_points=500):
        self.num_points = num_points

        self.x_values = [0]
        self.y_values = [0]

    def get_step(self):
        direction = choice([1, -1])
        distance = choice([0, 1, 2, 3, 4, 5])
        step = direction * distance
        return step

    def fill_walk(self):
        while len(self.x_values) < self.num_points:
            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)

rw_visual.py

# coding=utf-8
import matplotlib.pyplot as plt

from random_walk import RandomWalk

rw = RandomWalk(5000)
rw.fill_walk()

point_numbers = list(range(rw.num_points))
#plt.figure(dpi=128, figsize=(10, 6))

plt.scatter(rw.x_values, rw.y_values, c=point_numbers, cmap=plt.cm.Reds,
            edgecolors='none', s=10)

#plt.plot(rw.x_values, rw.y_values, c=(0, 0, 0.8), linewidth=1)
#设置图表标题,并给坐标轴加上标签
plt.title("Random Walk", fontsize=24)
plt.xlabel("x_values", fontsize=15)
plt.ylabel("y_values", fontsize=15)
#设置刻度标记的大小
plt.tick_params(axis='both', labelsize=14)

plt.scatter(0, 0, c='green', s=150)
plt.scatter(rw.x_values[-1], rw.y_values[-1], c='blue', s=150)

#plt.axes().get_xaxis().set_visible(False)
#plt.axes().get_yaxis().set_visible(False)
plt.savefig('random_walk.png', bbbox_inches='tight')
plt.show()
原文地址:https://www.cnblogs.com/adamhome/p/12257829.html