<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
為模擬隨機漫步,我們將建立一個RandomWalk類,隨機選擇前進方向,這個類有三個屬性,一個儲存隨機漫步的次數,另外兩個儲存隨機漫步的每個點的x,y座標,每次漫步都從點(0,0)出發
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]
我們將使用fill_walk()來生成隨機漫步包含的點,並決定每次漫步的方向。並將其新增到random_walk.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)
下面的程式碼將隨機漫步的所有點都繪製出來,將檔案命名為rw_visual.py
import matplotlib.pyplot as plt from random_walk import RandomWalk # 建立一個RandomWalk範例,並將其包含的點都繪製出來 rw = RandomWalk() rw.fill_walk() plt.scatter(rw.x_values, rw.y_values, s=10) plt.show()
每次隨機漫步都不同,因此每次生成的各種模式也很有趣,要在不多次執行程式的情況下,進行隨機漫步,可以把程式碼放入一個while迴圈中,每次關閉matplotlib檢視器,系統會詢問你是否再次模擬隨機漫步(輸入y將再次進行隨機漫步,輸入n將結束程式) 改程序式碼如下:
import matplotlib.pyplot as plt from random_walk import RandomWalk # 只要程式處於活動狀態,就不斷模擬隨機漫步 while True: # 建立一個RandomWalk範例,並將其包含的點都繪製出來 rw = RandomWalk() rw.fill_walk() plt.scatter(rw.x_values, rw.y_values, s=10) plt.show() keep_running = input("make another walk? (y/n):") if keep_running.upper() == 'N': break
每次隨機漫步都不同,就如人的一生每走一步都會有不同的經歷
使用顏色對映指出漫步中各點的先後順序,並刪除每個點的黑色輪廓,讓顏色更明顯。將引數c設定為points_numbers,指定使用顏色對映Blues,並傳遞實參edgecolor=none以刪除每個點周圍的輪廓,隨機漫步圖會從淺藍色漸變到深藍色,程式碼如下:
import matplotlib.pyplot as plt from random_walk import RandomWalk # 只要程式處於活動狀態,就不斷模擬隨機漫步 while True: # 建立一個RandomWalk範例,並將其包含的點都繪製出來 rw = RandomWalk() rw.fill_walk() point_numbers = list(range(rw.num_points)) plt.scatter(rw.x_values, rw.y_values, c=point_numbers, cmap=plt.cm.Blues, edgecolors='none', s=10) plt.show() keep_running = input("make another walk? (y/n):") if keep_running.upper() == 'N': break
效果如下:
還可以呈現出隨機漫步的起點和終點,我們讓起點和終點變得更大,並顯示為不同的顏色,程式碼如下:
import matplotlib.pyplot as plt from random_walk import RandomWalk # 只要程式處於活動狀態,就不斷模擬隨機漫步 while True: # 建立一個RandomWalk範例,並將其包含的點都繪製出來 rw = RandomWalk() rw.fill_walk() point_numbers = list(range(rw.num_points)) plt.scatter(rw.x_values, rw.y_values, c=point_numbers, cmap=plt.cm.Blues, edgecolors='none', s=10) # 突出起點和重點 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.upper() == 'N': break
效果如下:
增加點數,以提供更多的資料,我們在建立RandomWalk範例時增大num_points的值,並在繪圖時改變每個點的大小,程式碼如下:
import matplotlib.pyplot as plt from random_walk import RandomWalk # 只要程式處於活動狀態,就不斷模擬隨機漫步 while True: # 建立一個RandomWalk範例,並將其包含的點都繪製出來 rw = RandomWalk(50000) rw.fill_walk() point_numbers = list(range(rw.num_points)) plt.scatter(rw.x_values, rw.y_values, c=point_numbers, cmap=plt.cm.Blues, edgecolors='none', s=1) # 突出起點和重點 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.upper() == 'N': break
效果如下:
圖表適合螢幕大小時,更能有效地將資料中的規律呈現出來。函數figure()用於指定圖表的寬度、高度、解析度和背景色。需要給形參figsize指定一個元組,向matplotlib指出繪圖視窗的尺寸(單位為英寸) 如果你知道自己的系統解析度,可使用形參dpi像figure()傳遞該解析度,以有效利用可用的螢幕空間程式碼如下:
import matplotlib.pyplot as plt from random_walk import RandomWalk # 只要程式處於活動狀態,就不斷模擬隨機漫步 while True: # 建立一個RandomWalk範例,並將其包含的點都繪製出來 rw = RandomWalk(50000) rw.fill_walk() # 設定繪圖視窗的大小 plt.figure(dpi=128, 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, edgecolors='none', s=1) # 突出起點和重點 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.upper() == 'N': break
執行效果如下圖所示
到此這篇關於Python資料視覺化之簡單折線圖的繪製的文章就介紹到這了,更多相關Python折線圖繪製內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45