其他分享
首页 > 其他分享> > 随机漫步--学习日记9.30

随机漫步--学习日记9.30

作者:互联网

 大家好!这里是记录一个非专业的小白学习python的路径,完全是零基础自学。由于作者刚刚大学毕业所学专业找到的工作不太喜欢,工作空闲时间长,在职学习python语言,想借助这个平台记录一下自己学习的路径,文章有什么错误也希望大佬们积极指出,万分感谢!希望同大家一起学习,一起进步,谢谢。内容基于书籍python编程:从入门到实践    作者:Eric Matthes [美]

一、复习昨日之学习

#安装matplotlib。

#使用plot函数绘制折线图,设置x,y轴对应坐标的列表,设置线宽,颜色。

#修改标签文字和线条粗细,使用pyplot.title()函数设置图表标题字体大小,颜色。同样pyplot.xlabel() 和pyplot.ylabel()设置横坐标和纵坐标的标签,字号,颜色。

#使用scatter()绘制散点图,设置xy轴对应坐标的列表,设置点的大小,颜色。

#使用pyplot.axis()函数可设置xy轴的最大最小值,如pyplot.axis(0,100,0,1000)表示x轴范围为0-100,而y轴的范围为0-1000。

#所有的线或者点都由两部分组成内部填充和外部轮廓,外部轮廓可以使用实参edgecolor='none',在连续性线条绘制时可以有一个颜色映射的效果(其实和我们所知道的渐变有点相似)在plot函数中添加实参cmp=pyplot.cm.Blues以Blue颜色为渐变。

#最终显示出来需要使用pyplot.show()函数,显示出来后有保存按钮当然也可以使用pyplot.savefig()函数来进行保存,参数为保存的图片的名字,保存位置为该代码所在的文件夹下。

#昨天学习的源代码:

#coding=gbk

#mpl_squares.py

import matplotlib.pyplot as plt

'''
input_values= [1,2,3,4,5]
squares = [1,4,9,16,25]
plt.plot(input_values,squares,linewidth=5)

#设置图表标题,并给坐标轴加上标签
plt.title("Square Numbers",fontsize=24)
plt.xlabel("Value",fontsize=14)
plt.ylabel("Square of Value",fontsize=14)

#设置刻度标记的大小
plt.tick_params(axis='both',labelsize=14)

plt.show()



'''


#scatter_squares.py
x_values =list(range(1,1001))
y_values = [x**2 for x in x_values]


plt.scatter(x_values,y_values,c=y_values,cmap=plt.cm.Blues,
	edgecolor='none',s=40)

#设置图表标题并给坐标轴加上标签
plt.title("Square Numbers",fontsize=24)
plt.xlabel("Value",fontsize=14)
plt.ylabel("Square of Value",fontsize=14)

#设置刻度标记的大小
plt.axis([0,1100,0,1100000])



plt.savefig('squares_plot.png',bbox_inches='tight')#第一个参数为保存图片的名字,第二个参数为修剪图表的边框白边

二、今日之新学习

1.昨日知识练一练:

15-1 立方:数字的三次方被称为其立方。请绘制一个图形,显示前 5 个整数的立方 值,再绘制一个图形,显示前 5000 个整数的立方值。

#coding=gbk

#15-2
import matplotlib.pyplot as plt

x_values=[1,2,3,4,5]
y_values=[x**3 for x in x_values]
plt.plot(x_values,y_values)
plt.show()

运行结果为:

 第二问将xy赋值修改即可。x_values=list(range(1,5001))
y_values=[x**3 for x in x_values]

15-2 彩色立方:给你前面绘制的立方图指定颜色映射。

源代码:

#coding=gbk

#15-2
import matplotlib.pyplot as plt  

x_values=list(range(1,5001))
y_values=[x**3 for x in x_values]
plt.scatter(x_values,y_values,c=x_values,cmap=plt.cm.Reds,linewidth=5)#xy轴坐标,以y值来映射,颜色以红色来渐变,线宽
plt.title("Square Numbers", fontsize=24)#图表名称和字体大小
plt.xlabel("Value",fontsize=14)
plt.ylabel("Square of Value",fontsize=14)#xy标签及标签字体大小



plt.show()

效果图:

2.今日新学习

绘制随机漫步图

源代码如下:

#coding=gbk

#random_work.py #文件名

from random import choice

class RandomWalk():
	#一个生成随机漫步数据的类
	
	def __init__(self,num_points=5000):
		#初始化随机漫步的属性
		self.num_points = num_points
		
		#所有随机漫步都开始于(0,0)
		self.x_values = [0]
		self.y_values =[0]
		
	def fill_walk(self):
		#计算随机漫步包含的所有点
		
		#不断漫步,知道列表达到指定长度
		while len(self.x_values)<self.num_points:
			#决定前进方向以及沿这个方向前进的距离
			x_direction = choice([1,-1]) #要么向左走要么向右走
			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)

 

#coding=gbk

#rw_visual.py

import matplotlib.pyplot as plt

from random_walk import RandomWalk #引进RandomWalk 类


#创建一个RandomWalk 实例,并将其包含的点都绘制出来
rw =RandomWalk()
rw.fill_walk()
plt.scatter(rw.x_values,rw.y_values,s=15)#xy列表,s为散点大小
plt.show()

运行效果:

#可以在第二段代码中添加while循环,可一直生成漫步点图,由于是随机的所以每次图像都是不一样的,用户可自行决定退出。

#同样也可以运用昨天所学知识向scatter()函数中增加参数来修改颜色或映射来达到突出效果。

#可以单独为起点和终点设置效果,就是单独再次使用scatter()进行设置即可,设置窗口大小等等。

上述操作源代码:

#coding=gbk

#rw_visual.py

import matplotlib.pyplot as plt

from random_walk import RandomWalk #引进RandomWalk 类

while True:
	#创建一个RandomWalk 实例,并将其包含的点都绘制出来
	rw =RandomWalk(5000)
	rw.fill_walk()
	#设置窗口大小
	plt.figure(figsize=(10,6))
	
	point_numbers = list(range(rw.num_points))
	plt.scatter(rw.x_values,rw.y_values,c=point_numbers,
		cmap=plt.cm.Blues,s=15)#xy列表,以随机点顺序为映射,s为散点大小
	
	#突出起点和终点
	plt.scatter(0,0,c='green',edgecolors='none',s=100)
	plt.scatter(rw.x_values[-1],rw.y_values[-1],c='red',
		edgecolors='none',s=100)
	
	
	
	
	plt.show()
	keep_running = input("make another walk?(y/n)")
	if keep_running =='n':
		break
		

效果图:

 

标签:9.30,plt,漫步,--,pyplot,rw,values,RandomWalk,scatter
来源: https://blog.csdn.net/weixin_61530560/article/details/120566307