最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python+matplotlib調(diào)用隨機函數(shù)生成變化圖形

 更新時間:2022年04月26日 11:07:19   作者:PursuitingPeak  
這篇文章主要介紹了如何在Python中利用隨機函數(shù)生成變化的圖形,文中的示例代碼講解詳細,對我們學(xué)習(xí)有一定吧參考價值,需要的可以了解一下

前言

綜合前述的類、函數(shù)、matplotlib等,完成一個隨機移動的過程(注意要確定移動的次數(shù),比如10萬次),每次行走都完全是隨機的,沒有明確的方向,結(jié)果是由一系列隨機決策確定的,最后顯示出每次移動的位置的圖表。

思考:

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

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

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

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

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

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

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

如下: 

from random import choice  #random是系統(tǒng)自帶的隨機函數(shù)模塊

class Rand_moving(): #定義一個Rand_moving類
    def __init__(self,num_times=100000):  # 初始化,設(shè)置默認(rèn)參數(shù)為10萬,可以修改這個參數(shù)試試機器運行速度
        self.num_times = num_times  #移動次數(shù)
        
        self.x_values=[0]   # 設(shè)置兩個數(shù)列,用來保存每一步的位置,初始位置為(0, 0),數(shù)列元素個數(shù)會一直增加到num_times,用來記錄每一步的位置信息
        self.y_values=[0]    
        
    def fill_moving(self):  #定義一個函數(shù),用來計算移動方向和距離,并計算需要保存的位置信息
        while len(self.x_values)<self.num_times:#循環(huán)不斷運行,直到漫步包含所需數(shù)量的點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
            
            #計算下一個點的位置坐標(biāo)x和y值,并分別保存到數(shù)列x_values和y_values中
            next_x = self.x_values[-1] + x_step  #self.x_values[-1]表示是數(shù)列最后一個值,初始為x_values=[0]
            next_y = self.y_values[-1] + y_step   
            
            self.x_values.append(next_x ) #將每次計算的next_x存入到數(shù)列x_values中
            self.y_values.append(next_y ) #將每次計算的next_y存入到數(shù)列y_values中

二、繪圖模塊

randdraw_visual.py

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

1、調(diào)用matplotlib和rand_moving類;

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

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

import matplotlib.pyplot as plt  #導(dǎo)入matplotlib模塊

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

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

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

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

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

入門(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的參數(shù)是字符串,可以直接使用顏色的英文進行賦值,比如:c='yellow',見后面修改起點、終點顏色。

指定一個紅色,一個藍色,實際運行效果(有重復(fù)的地方,實例設(shè)置為藍色在后面,將紅色蓋?。?/p>

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

import matplotlib.pyplot as plt

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

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

new_rm = Rand_moving(500000)  # 創(chuàng)建一個實例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)   #設(shè)置起點,把s設(shè)置較大,以示區(qū)別
#兩個實例終點不同,分別重繪終點位置 
plt.scatter(rm.x_values[-1], rm.y_values[-1],c='brown',edgecolor='none',s=100)  #設(shè)置實例rm的終點,思考為什么用[-1]
plt.scatter(new_rm.x_values[-1], new_rm.y_values[-1],c='pink',edgecolor='none',s=100) #設(shè)置實例new_rm的終點

plt.show()

實際運行效果:

顯示圖表屏幕大小

圖表適合屏幕大小能有效地將數(shù)據(jù)中的規(guī)律呈現(xiàn)出來,如果要調(diào)整屏幕大小,可調(diào)整matplotlib輸出的尺寸

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

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

形參 figsize 指定一個元組

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

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

import matplotlib.pyplot as plt

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

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

new_rm = Rand_moving(500000)  # 創(chuàng)建一個實例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()

當(dāng)然,還可以試一下他函數(shù)功能。 

是不是有點小小的成就感!

小結(jié)

請思考:

1、上述程序是否能進行優(yōu)化(比如功能相同的)

2、創(chuàng)建三個3個實例,用了3個語句,能否建一個函數(shù),只輸入一個數(shù)n,就自動創(chuàng)建n個實例?同時,每個實例的num_times隨機,(n比較大時,num_times應(yīng)該比較小)

3、當(dāng)實現(xiàn)上述功能后,程序運行,只輸入一個參數(shù)(創(chuàng)建實例的個數(shù)),就會自動生成對應(yīng)的num_times,并分別調(diào)用相關(guān)函數(shù)生成對應(yīng)圖表。

以上就是Python+matplotlib調(diào)用隨機函數(shù)生成變化圖形的詳細內(nèi)容,更多關(guān)于Python隨機函數(shù)生成變化圖形的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python?ctypes庫底層交互秘籍實例探究

    Python?ctypes庫底層交互秘籍實例探究

    ctypes是Python標(biāo)準(zhǔn)庫中的外部函數(shù)庫,允許Python調(diào)用動態(tài)鏈接庫中的函數(shù),它提供了與C兼容的數(shù)據(jù)類型和允許Python調(diào)用共享庫中的函數(shù),對系統(tǒng)級編程和與硬件交互非常有用
    2024-01-01
  • Python數(shù)據(jù)分析之獲取雙色球歷史信息的方法示例

    Python數(shù)據(jù)分析之獲取雙色球歷史信息的方法示例

    這篇文章主要介紹了Python數(shù)據(jù)分析之獲取雙色球歷史信息的方法,涉及Python網(wǎng)頁抓取、正則匹配、文件讀寫及數(shù)值運算等相關(guān)操作技巧,需要的朋友可以參考下
    2018-02-02
  • python中異常的傳播詳解

    python中異常的傳播詳解

    大家好,本篇文章主要講的是python中異常的傳播詳解,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-01-01
  • 5款實用的python 工具推薦

    5款實用的python 工具推薦

    工欲善其事必先利其器,一個好的工具能讓起到事半功倍的效果,Python 社區(qū)提供了足夠多的優(yōu)秀工具來幫助開發(fā)者更方便的實現(xiàn)某些想法,下面這幾個工具給我的工作也帶來了很多便利,推薦給追求美好事物的你。
    2020-10-10
  • 使用grpc實現(xiàn)golang后端和python服務(wù)間通信

    使用grpc實現(xiàn)golang后端和python服務(wù)間通信

    gRPC是Google 開發(fā)的高性能、開源的遠程過程調(diào)用(RPC)框架,本文主要為大家詳細介紹了如何使用grpc實現(xiàn)golang后端和python服務(wù)間通信,感興趣的可以了解下
    2024-03-03
  • 基于Python創(chuàng)建可定制的HTTP服務(wù)器

    基于Python創(chuàng)建可定制的HTTP服務(wù)器

    這篇文章主要為大家演示一下如何使用?http.server?模塊來實現(xiàn)一個能夠發(fā)布網(wǎng)頁的應(yīng)用服務(wù)器,文中的示例代碼講解詳細,感興趣的小伙伴可以了解一下
    2023-05-05
  • Python淺析生成器generator的使用

    Python淺析生成器generator的使用

    生成器generator在循環(huán)過程中,按照某種算法推算數(shù)據(jù),不必創(chuàng)建容器存儲完整的結(jié)果,從而節(jié)省內(nèi)存空間。數(shù)據(jù)量越大,優(yōu)勢越明顯。以上作用也稱之為延遲操作或惰性操作,通俗的講就是在需要的時候才計算結(jié)果,而不是一次構(gòu)建出所有結(jié)果
    2022-07-07
  • Python+selenium實現(xiàn)瀏覽器基本操作詳解

    Python+selenium實現(xiàn)瀏覽器基本操作詳解

    這篇文章主要為大家詳細介紹了如何通過python腳本實現(xiàn)瀏覽器的一些基本操作,如:瀏覽器的前進后退、頁面刷新等,感興趣的可以學(xué)習(xí)一下
    2022-06-06
  • 如何用Pytorch搭建一個房價預(yù)測模型

    如何用Pytorch搭建一個房價預(yù)測模型

    這篇文章主要介紹了用Pytorch搭建一個房價預(yù)測模型,在這里我將主要討論PyTorch建模的相關(guān)方面,作為一點額外的內(nèi)容,我還將演示PyTorch中開發(fā)的模型的神經(jīng)元重要性,需要的朋友可以參考下
    2023-03-03
  • Python中decimal.Decimal類型和float類型的比較

    Python中decimal.Decimal類型和float類型的比較

    這篇文章主要介紹了Python中decimal.Decimal類型和float類型的比較,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11

最新評論

昆明市| 庆安县| 吴江市| 辉县市| 中江县| 东辽县| 慈利县| 灵石县| 温州市| 达州市| 马边| 望江县| 明光市| 嘉峪关市| 珠海市| 子洲县| 五大连池市| 天全县| 方山县| 牙克石市| 东乌珠穆沁旗| 宜宾县| 荆门市| 唐海县| 满洲里市| 镇安县| 拜泉县| 大方县| 新龙县| 刚察县| 绍兴县| 阿鲁科尔沁旗| 乌海市| 岢岚县| 诏安县| 丰都县| 凤翔县| 新野县| 镇巴县| 青田县| 田东县|