中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python怎么利用隨機函數生成變化圖形

發布時間:2022-04-26 13:42:28 來源:億速云 閱讀:258 作者:iii 欄目:開發技術

這篇文章主要介紹“Python怎么利用隨機函數生成變化圖形”,在日常操作中,相信很多人在Python怎么利用隨機函數生成變化圖形問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Python怎么利用隨機函數生成變化圖形”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

前言

思考:

1)每次走動多少個像素,由隨機函數決定,每次移動方向也隨機確定。由隨機方向和隨機像素共同移動位置大小和方向。

2)保證將每次移動的位置保存在列表中,供后面matplotlib調用,生成圖表。

故而,可以分成兩個文件,一個為rand_moving類,生成走動像素、方向,并記錄相關數據,保存在數列中,另一個為繪圖模塊randdraw_visual ,調用matplotlib和rand_moving類,生成一個實例,并調用計算出的數列組生成圖表。

一、rand_moving.py文件定義功能如下

1、初始化程序,設置一個參數,即移動的次數,初始化位置全部設置為0

2、隨機生成x,y的方向和移動像素,并相乘,得到相對移動距離,即為每次移動的距離和方向,即需要4個隨機函數來分別確定水平方向和垂直方向的 移動位置大小和方向,

3,計算出下一個位置,并進行保存到位置數列中,即每走完一步后,在屏幕中的絕對位置。

如下: 

from random import choice  #random是系統自帶的隨機函數模塊

class Rand_moving(): #定義一個Rand_moving類
    def __init__(self,num_times=100000):  # 初始化,設置默認參數為10萬,可以修改這個參數試試機器運行速度
        self.num_times = num_times  #移動次數
        
        self.x_values=[0]   # 設置兩個數列,用來保存每一步的位置,初始位置為(0, 0),數列元素個數會一直增加到num_times,用來記錄每一步的位置信息
        self.y_values=[0]    
        
    def fill_moving(self):  #定義一個函數,用來計算移動方向和距離,并計算需要保存的位置信息
        while len(self.x_values)<self.num_times:#循環不斷運行,直到漫步包含所需數量的點num_times
           
            x_direction = choice([1,-1])       #x的移動方向,1向上,0不變,-1向下
            x_distance = choice([0,1,2,3,4,5]) #x的每次移動的像素,
            x_step = x_direction*x_distance    #移動方向乘以移動距離,以確定沿x移動的距離
            
            y_direction =  choice([1,-1])      #y的移動方向,1向上,0不變,-1向下
            y_distance = choice([0,1,2,3,4,5]) #y的每次移動的像素,
            y_step = y_direction*y_distance    #移動方向乘以移動距離,以確定沿y移動的距離
            
            #原地不變
            if x_step ==0 and y_step==0:  # x_step和 y_step都為零,則意味著原地踏步
                continue
            
            #計算下一個點的位置坐標x和y值,并分別保存到數列x_values和y_values中
            next_x = self.x_values[-1] + x_step  #self.x_values[-1]表示是數列最后一個值,初始為x_values=[0]
            next_y = self.y_values[-1] + y_step   
            
            self.x_values.append(next_x ) #將每次計算的next_x存入到數列x_values中
            self.y_values.append(next_y ) #將每次計算的next_y存入到數列y_values中

二、繪圖模塊

randdraw_visual.py

繪圖模塊randdraw_visual.py的功能如下:

1、調用matplotlib和rand_moving類;

2、rand_moving生成一個實例,并計算出的數列組生成圖表;

3、用matplotlib中的方法生成圖表

import matplotlib.pyplot as plt  #導入matplotlib模塊

from rand_moving import *   #也可以用 import random_moving   注意使用過程中的細微差別 ,小寫開頭的rand_moving是文件(或稱為模塊,一個模塊中可以有一個類,或多個類),大寫開頭Rand_moving是類。

rm = Rand_moving()  # 利用導入的 Rand_moving 類,創建一個實例rm,這里沒有給定參數,默認是10萬,可以修改為其他數據。
rm.fill_moving()    # 調用類的方法fill_moving() ,并生成隨機數列,存入到x_values和y_values中,

plt.scatter(rm.x_values, rm.y_values,s=15)#調用實例rm中位置數列x_values和y_values生成圖表
plt.show()

程序運行效果(注意,為了對比,程序中創建了3個實例,其中一個為默認值,另兩個為50萬和5萬,如果一直沒顯示,請耐心等會兒!)

Python怎么利用隨機函數生成變化圖形

上述三個實例處在同一圖中,呈現不同顏色,如果只有一個實例,如何修改顏色?

入門(1)中,語句 plt.scatter(x_values, y_values, c=y_values, cmap=plt.cm.Blues,edgecolor='none', s=40) 是修改漸變色的,可償試將randdraw_visual.py模塊中進行如下修改:

plt.scatter(rm.x_values, rm.y_values,c=y_values, cmap=plt.cm.Reds,edgecolor='none',s=15)

注: c的參數是字符串,可以直接使用顏色的英文進行賦值,比如:c='yellow',見后面修改起點、終點顏色。

指定一個紅色,一個藍色,實際運行效果(有重復的地方,實例設置為藍色在后面,將紅色蓋住):

Python怎么利用隨機函數生成變化圖形

除些之外,還可以對特定的點進行設定,也就是在語句plt.scatter(rm.x_values, rm.y_values,c=y_values, cmap=plt.cm.Reds,edgecolor='none',s=15)之后,再多幾個相關語句,并給定相關點坐標。

import matplotlib.pyplot as plt

from rand_moving import *   #也可以用import random_moving注意使用過程中的差別

rm = Rand_moving()  # 創建一個實例rm,這里沒有給定參數,默認是10萬,可以修改為其他數據。
rm.fill_moving()    # 調用類的方法fill_moving() ,并生成隨機數列,存入到x_values和y_values中
plt.scatter(rm.x_values,rm.y_values,c=rm.y_values,cmap=plt.cm.Reds,edgecolor='none',s=15)
#調用實例rm中數列x_values和y_values生成圖表#調用實例rm中數列x_values和y_values生成圖表

new_rm = Rand_moving(500000)  # 創建一個實例new_rm,是50萬次
new_rm.fill_moving()   
plt.scatter(new_rm.x_values,new_rm.y_values,c=new_rm.y_values, cmap=plt.cm.Blues,edgecolor='none',s=15)

# 重繪起點,終點
#因為兩個實例的起點一樣,只需一個起點即可
plt.scatter(rm.x_values[0], rm.y_values[0],c='yellow',edgecolor='none',s=100)   #設置起點,把s設置較大,以示區別
#兩個實例終點不同,分別重繪終點位置 
plt.scatter(rm.x_values[-1], rm.y_values[-1],c='brown',edgecolor='none',s=100)  #設置實例rm的終點,思考為什么用[-1]
plt.scatter(new_rm.x_values[-1], new_rm.y_values[-1],c='pink',edgecolor='none',s=100) #設置實例new_rm的終點

plt.show()

實際運行效果:

Python怎么利用隨機函數生成變化圖形

顯示圖表屏幕大小

圖表適合屏幕大小能有效地將數據中的規律呈現出來,如果要調整屏幕大小,可調整matplotlib輸出的尺寸

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

函數 figure() 用于指定圖表的寬度、高度、分辨率和背景色。

形參 figsize 指定一個元組

形參 dpi 向 figure() 傳遞該分辨率

注意:plt.figure(dpi=128,figsize=(12, 10))語句要在其他plt開始語句的前面,才能調整顯示屏幕的大小。

import matplotlib.pyplot as plt

from rand_moving import *   #也可以用import random_moving注意使用過程中的差別
#調整屏幕大小
plt.figure(dpi=128,figsize=(12, 10))  #一開始就要定義顯示的大小,當然,可以試一下,放到plt.show()之前其他位置的運行效果。

rm = Rand_moving()  # 創建一個實例rm,這里沒有給定參數,默認是10萬,可以修改為其他數據。
rm.fill_moving()    # 調用類的方法fill_moving() ,并生成隨機數列,存入到x_values和y_values中
plt.scatter(rm.x_values,rm.y_values,c=rm.y_values,cmap=plt.cm.Reds,edgecolor='none',s=15)
#調用實例rm中數列x_values和y_values生成圖表#調用實例rm中數列x_values和y_values生成圖表

new_rm = Rand_moving(500000)  # 創建一個實例new_rm,是50萬次
new_rm.fill_moving()   
plt.scatter(new_rm.x_values,new_rm.y_values,c=new_rm.y_values, cmap=plt.cm.Blues,edgecolor='none',s=15)

plt.show()

到此,關于“Python怎么利用隨機函數生成變化圖形”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

永修县| 洛浦县| 鹤山市| 东乡| 渝北区| 灵山县| 白城市| 天津市| 新兴县| 古浪县| 依安县| 临颍县| 丹寨县| 民和| 东阿县| 乌鲁木齐县| 武清区| 阜宁县| 汶川县| 新营市| 榆中县| 渭源县| 霸州市| 油尖旺区| 深泽县| 隆德县| 乡城县| 怀宁县| 古交市| 乌鲁木齐县| 安塞县| 城口县| 东台市| 梁河县| 景洪市| 石台县| 师宗县| 抚州市| 双柏县| 曲阳县| 武穴市|