欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

前言

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

思考:

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

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

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

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

1、初始化程序,設置一個參數(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ù)為10萬,可以修改這個參數(shù)試試機器運行速度
        self.num_times = num_times  #移動次數(shù)
        
        self.x_values=[0]   # 設置兩個數(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
            
            #計算下一個點的位置坐標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  #導入matplotlib模塊

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

rm = Rand_moving()  # 利用導入的 Rand_moving 類,創(chuàng)建一個實例rm,這里沒有給定參數(shù),默認是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個實例,其中一個為默認值,另兩個為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',見后面修改起點、終點顏色。

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

除些之外,還可以對特定的點進行設定,也就是在語句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()  # 創(chuàng)建一個實例rm,這里沒有給定參數(shù),默認是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)   #設置起點,把s設置較大,以示區(qū)別
#兩個實例終點不同,分別重繪終點位置 
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()

實際運行效果:

顯示圖表屏幕大小

圖表適合屏幕大小能有效地將數(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))  #一開始就要定義顯示的大小,當然,可以試一下,放到plt.show()之前其他位置的運行效果。

rm = Rand_moving()  # 創(chuàng)建一個實例rm,這里沒有給定參數(shù),默認是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()

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

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

小結(jié)

請思考:

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

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

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

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

相關文章

  • python列表的構造方法list()

    python列表的構造方法list()

    這篇文章主要介紹了python列表的構造方法list(),python中沒有數(shù)組這個概念,與之相應的是列表,本篇文章就來說說列表這個語法,下面文章詳細內(nèi)容,需要的小伙伴可以參考一下
    2022-03-03
  • python基于scrapy爬取京東筆記本電腦數(shù)據(jù)并進行簡單處理和分析

    python基于scrapy爬取京東筆記本電腦數(shù)據(jù)并進行簡單處理和分析

    這篇文章主要介紹了python基于scrapy爬取京東筆記本電腦數(shù)據(jù)并進行簡單處理和分析的實例,幫助大家更好的理解和學習使用python。感興趣的朋友可以了解下
    2021-04-04
  • 用Python寫一段用戶登錄的程序代碼

    用Python寫一段用戶登錄的程序代碼

    下面小編就為大家分享一篇用Python寫一段用戶登錄的程序代碼,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • ConvNeXt實戰(zhàn)之實現(xiàn)植物幼苗分類

    ConvNeXt實戰(zhàn)之實現(xiàn)植物幼苗分類

    ConvNeXts由標準ConvNet模塊構建,在準確性和可擴展性方面與 Transformer競爭,實現(xiàn)87.8% ImageNet top-1 準確率,在 COCO 檢測和 ADE20K 分割方面優(yōu)于 Swin Transformers。本文將利用ConvNeXt實現(xiàn)植物幼苗分類,需要的可以參考一下
    2022-01-01
  • Python?對象拷貝及深淺拷貝區(qū)別的詳細教程示例

    Python?對象拷貝及深淺拷貝區(qū)別的詳細教程示例

    這篇文章主要介紹了Python?對象拷貝及深淺拷貝區(qū)別的詳細教程示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-03-03
  • python使用SMTP發(fā)送qq或sina郵件

    python使用SMTP發(fā)送qq或sina郵件

    這篇文章主要為大家詳細介紹了python使用SMTP發(fā)送qq或sina郵件,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • 在matplotlib中改變figure的布局和大小實例

    在matplotlib中改變figure的布局和大小實例

    這篇文章主要介紹了在matplotlib中改變figure的布局和大小實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • python+numpy實現(xiàn)的基本矩陣操作示例

    python+numpy實現(xiàn)的基本矩陣操作示例

    這篇文章主要介紹了python+numpy實現(xiàn)的基本矩陣操作,結(jié)合實例形式分析了Python使用numpy模塊針對矩陣進行創(chuàng)建、增刪查改、索引、運算相關操作實現(xiàn)技巧,注釋中包含有詳細的說明,需要的朋友可以參考下
    2019-07-07
  • selenium python瀏覽器多窗口處理代碼示例

    selenium python瀏覽器多窗口處理代碼示例

    這篇文章主要介紹了selenium python瀏覽器多窗口處理代碼示例,具有一定借鑒價值,需要的朋友可以參考下
    2018-01-01
  • Python中Jupyter notebook快捷鍵總結(jié)

    Python中Jupyter notebook快捷鍵總結(jié)

    在本篇文章里小編給大家整理的是一篇關于Python中Jupyter notebook快捷鍵總結(jié)內(nèi)容,有興趣的朋友們可以學習下。
    2021-04-04

最新評論