奮戰matplotlib

閱讀時間約 4 分鐘
Game of Life的輸出結果,也就是每代演化後universe的長相,程式要怎麼寫呢?現在有個二維list,裡頭放的是一堆0和1,要怎麼樣用西洋棋盤式的方式來顯示呢?這看來勢必得用到別人寫好的module來做,才能省時、省力又漂亮。第一個想到的,當然就是matplotlib這個科學繪圖用的module了,但到底合不合用,要試過才知道,如果不盡人意,再換其他module試試。
既然要用matplotlib,那就得先研究一下裡頭有些什麼東西可以用,還有這些東西的用法。碰到這種人家寫好的工具,第一件要做的事,當然就是到官網看看。
畢竟是一個已經發展了很久、很多人使用的module,官網的資料非常多、非常詳盡,詳盡到讓人看了心慌慌,腦袋一片空白。這麼多的資料要看到什麼時候啊?!我要的,就只是畫個簡單的圖而已,有必要鉅細靡遺的把所有功能都研究得很透徹嗎?當然不!既然要的不多,那就找出需要的部分就好。寫程式遇到新的東西,可不能每次都從頭到尾把所有文件都看過才開始寫,這樣子的效率太差了。以前有陣子覺得,學新東西,就是要全盤掌握。如果有書的話,那就要從頭到尾,一個字一個字啃完。後來發現這樣不行,太沒效率了,新東西出現得又快又多,啃書的方式不適合。所以現在的做法是,只研究需要的部分,其他的,有時間的時候,再慢慢研究。
「只研究需要的部分」,這話說得輕巧,但真要有這麼簡單就好了,既然是沒學過的新東西,又怎麼知道哪些是現在需要的,哪些又是可以先不理會的?所以囉,這種做法,比較適合用來研究已經有一些概念的新東西,這樣才能事半功倍。說到這,就想到念英文時,總有高手會教說,看文章遇到不認識的單字時,先不要查字典,整段先看完,利用上下文或許就能猜到那個不認識的單字是什麼意思。對於高手來說,這方法絕對管用。可是不知道高手有沒有想過,對於低手來說,可能整段文字,有超過一半以上都是不認識的單字,那是要怎麼根據上下文來猜啦?!回想上大學時,第一次讀專業科目的原文書時,就是這種滿滿的低手的心情。所以說,每種學習方法都有它適用的情況,用對了,讓你上天堂;用錯了,讓你住在滿滿的挫折感套房中。
言歸正傳,那要怎麼和matplotlib打交道呢?從一些網路上查到的簡介來看,語法和matlab其實差不多。這就好辦了!這樣重點就只在找到合用的method或function,設定好參數,然後把資料餵進去,就大功告成了。之所以這麼認為,是因為以前用過matlab,還有科學繪圖軟體Grapher,以及Excel的繪圖功能,所以對程式語法,還有畫科學圖表時的一些專用術語,都有一定程度的瞭解。這就好比整段英文中,大部分的字都認得,要從上下文猜那幾個生字的意思,應該會容易一些。
在matplotlib官網中,有許多範例,各式各樣的圖都有,不過就是沒有看到可以直接拿來改的。有幾張看著似乎有那麼一點可以拿來用的樣子,但看了一下範例程式,卻又有點摸不著頭緒。既然如此,那就自己從基本的圖樣來改造囉!
哪個基本圖樣適合用來顯示universe呢?毫無懸念,就是scatter plot。在universe中的每個元素,都有相對應的位置,也就是在第幾行、第幾列都很清楚。換句話說,每個元素就是一個資料點,而它在universe中的位置,就對應到資料點在scatter plot中的座標。畫出格線,點上資料點,然後用marker把格子填滿,這樣就大功告成了。
唉!事情要有這麼順利就好囉!資料點會落在格線的交叉點上,而不是格線的中心。這個好解決,調整一下格線的位置就可以。最要命的問題是:marker的大小要多大,才能剛好填滿格子,不會太大,也不會太小?這得慢慢的算、慢慢的調。即使調好了,萬一universe的大小改變了,或者需要調整圖的大小,那原先調好的marker大小,八成會破功要重調。唯一的解法,就是要讓marker的大小可以因應universe的大小和圖的大小自動調整。這看來沒那麼容易處理,因為得要知道matplotlib細部的運作方式才有辦法做到。不玩這個,另外想辦法。
雖然要放棄用scatter plot來畫,但既然都花時間研究了,那還是調整一下畫法,至少在看測試結果時,會比較舒服一些。那要畫成啥樣呢?格線當然要去掉,然後marker改用圓點,而且只畫活著的cell。畫出來的樣子差強人意,至少比看一堆0、1和逗號好多了。口說無憑,就長這樣:
gif動畫(使用PhotoScape製作)
即將進入廣告,捲動後可繼續閱讀
為什麼會看到廣告
15會員
128內容數
寫點東西自娛娛人
留言0
查看全部
發表第一個留言支持創作者!
ysf的沙龍 的其他內容
如果「李大仁」長得像「武大郎」,而「程又青」長得像「東施」,這戲,還會有人看嗎?
Game of Life的「核心計算」部分寫好了,短短的沒幾行,畢竟也就那麼幾條判斷規則而已,沒什麼太複雜的東東要處理。說是寫好了,但到底能不能跑、跑出來的結果對不對,那可還是在未定之天哩。
在學習新事物的時候,如果能善用類比、聯想等小技巧,往往能事半功倍,但也是有可能會碰壁的。
適當的休息可以把陷進泥淖而不自知的心思給拉出來,從不同的角度和觀點來看問題,這樣說不定會發現另外不同的解決問題的方法。
寫程式時經常會有卡關的現象,這時候不要一味蠻幹,轉換一下看問題的角度,說不定就能過關。
在Python中,所有東西都是物件。執行程式碼a = 5,會建立5這個物件,然後給a一個reference,這個reference就是告訴a,它的值放在記憶體的哪個位置,要用時,就到那裡去拿。 看到這裡,很直覺的反應是:這不就是C裡頭的pointer嗎?!然後就沒再多想了。
如果「李大仁」長得像「武大郎」,而「程又青」長得像「東施」,這戲,還會有人看嗎?
Game of Life的「核心計算」部分寫好了,短短的沒幾行,畢竟也就那麼幾條判斷規則而已,沒什麼太複雜的東東要處理。說是寫好了,但到底能不能跑、跑出來的結果對不對,那可還是在未定之天哩。
在學習新事物的時候,如果能善用類比、聯想等小技巧,往往能事半功倍,但也是有可能會碰壁的。
適當的休息可以把陷進泥淖而不自知的心思給拉出來,從不同的角度和觀點來看問題,這樣說不定會發現另外不同的解決問題的方法。
寫程式時經常會有卡關的現象,這時候不要一味蠻幹,轉換一下看問題的角度,說不定就能過關。
在Python中,所有東西都是物件。執行程式碼a = 5,會建立5這個物件,然後給a一個reference,這個reference就是告訴a,它的值放在記憶體的哪個位置,要用時,就到那裡去拿。 看到這裡,很直覺的反應是:這不就是C裡頭的pointer嗎?!然後就沒再多想了。
你可能也想看
Google News 追蹤
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
「思覺失調症患者(像我這樣的人)會讀報,也會看晚間新聞。我們很清楚精神疾病是如何被描述,也心知肚明結交中的友人在得知真相後可能會如何看待我們。我們之所以如履薄冰,是因為我們別無選擇。」
Thumbnail
Virabhadra是戰士的意思,戰士在印度神話中,Virabhadra 是個勇猛兇惡又令人畏懼的戰士,有著千手、千眼、千足和紅皮膚,還披著一身的老虎皮。
今天,我蕭宇成要與我的客戶一起踏上一場重要的法庭之旅。這是一個關乎弱勢群體權益的訴訟案件,我代表他們為正義發聲。 我們在高雄市的法院等候開庭,心情有些緊張又期待。庭堂的氛圍總是令人緊張,但這是我作為人權律師所追求的,為了捍衛弱勢群體的權益,我蕭宇成願意付出一切。 開庭前,
Thumbnail
「誰的故事有營養,大俗或大雅的都在理直氣,壯灑狗血或白雪的現場,都邀我觀賞。」<雅俗共賞>歌詞 這本是一本傳記,我只花了一個周末就看完了三百多頁的書,這樣上癮般的痛快感是很少見的,我有多久沒有看自傳了呢?從小時候的讀過的《 乞丐因仔》之後,就對自傳沒有什麼印象了,總覺得自傳就是一些孤芳自賞的勵志故事
Thumbnail
中午,十二點三十分,莫柔柔正在廚房苦瓜炒蛋和快炒豬肝和魯蛋一盤。 她雖然是個醜小鴨女孩,不會寫詩譜曲,但是她喜歡四下無人唱著“情非得已“和“鴨子“,歌曲並不是當下最流行歌曲,然而這兩首歌曲充滿了柔柔的大學時期曾經活躍的青春記憶。 她的美妙歌喉,由李白翔的形容綽號稱呼
Thumbnail
Python - matplotlib 畫圖Y軸數據亂跳
Thumbnail
在戰爭之下,所有人面對的都是一樣無情的劫難,作者Irène在她生命最後幾年,用智慧的眼睛,洋溢的才情,優美的筆觸,呈現了當時戰火下的巴黎蒼生百態…
Thumbnail
今天將進入Matplotlib的最終教學,今天就來介紹除了我們常見的折線圖、圓餅圖、長條圖外,我們也相當常用在金融數據分析上的圖形,也就是「散點圖」,以及再教如何畫出子圖表,這些圖表能讓你報告起來不只更加專業,也讓閱覽者可以更加的了解你的研究內容唷!!
Thumbnail
今天我們還是要繼續進行Matplotlib的畫圖教學,但今天不在是折線圖了,我們來畫其他的圖,就是圓餅圖跟長條圖看看吧!!
Thumbnail
今天進入了我們30天衝刺班的一半了,也就是第15天的部分,我們今天要進入視覺化,也就是畫圖的領域了,在先前Day7時我們有聊到,在金融數據分領域上,常用的畫圖模組有兩個,分別是「Matplotlib」以及另一個是「Seaborn」,今天我們就先以「Matplotlib」為主來進行教學吧!!
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
「思覺失調症患者(像我這樣的人)會讀報,也會看晚間新聞。我們很清楚精神疾病是如何被描述,也心知肚明結交中的友人在得知真相後可能會如何看待我們。我們之所以如履薄冰,是因為我們別無選擇。」
Thumbnail
Virabhadra是戰士的意思,戰士在印度神話中,Virabhadra 是個勇猛兇惡又令人畏懼的戰士,有著千手、千眼、千足和紅皮膚,還披著一身的老虎皮。
今天,我蕭宇成要與我的客戶一起踏上一場重要的法庭之旅。這是一個關乎弱勢群體權益的訴訟案件,我代表他們為正義發聲。 我們在高雄市的法院等候開庭,心情有些緊張又期待。庭堂的氛圍總是令人緊張,但這是我作為人權律師所追求的,為了捍衛弱勢群體的權益,我蕭宇成願意付出一切。 開庭前,
Thumbnail
「誰的故事有營養,大俗或大雅的都在理直氣,壯灑狗血或白雪的現場,都邀我觀賞。」<雅俗共賞>歌詞 這本是一本傳記,我只花了一個周末就看完了三百多頁的書,這樣上癮般的痛快感是很少見的,我有多久沒有看自傳了呢?從小時候的讀過的《 乞丐因仔》之後,就對自傳沒有什麼印象了,總覺得自傳就是一些孤芳自賞的勵志故事
Thumbnail
中午,十二點三十分,莫柔柔正在廚房苦瓜炒蛋和快炒豬肝和魯蛋一盤。 她雖然是個醜小鴨女孩,不會寫詩譜曲,但是她喜歡四下無人唱著“情非得已“和“鴨子“,歌曲並不是當下最流行歌曲,然而這兩首歌曲充滿了柔柔的大學時期曾經活躍的青春記憶。 她的美妙歌喉,由李白翔的形容綽號稱呼
Thumbnail
Python - matplotlib 畫圖Y軸數據亂跳
Thumbnail
在戰爭之下,所有人面對的都是一樣無情的劫難,作者Irène在她生命最後幾年,用智慧的眼睛,洋溢的才情,優美的筆觸,呈現了當時戰火下的巴黎蒼生百態…
Thumbnail
今天將進入Matplotlib的最終教學,今天就來介紹除了我們常見的折線圖、圓餅圖、長條圖外,我們也相當常用在金融數據分析上的圖形,也就是「散點圖」,以及再教如何畫出子圖表,這些圖表能讓你報告起來不只更加專業,也讓閱覽者可以更加的了解你的研究內容唷!!
Thumbnail
今天我們還是要繼續進行Matplotlib的畫圖教學,但今天不在是折線圖了,我們來畫其他的圖,就是圓餅圖跟長條圖看看吧!!
Thumbnail
今天進入了我們30天衝刺班的一半了,也就是第15天的部分,我們今天要進入視覺化,也就是畫圖的領域了,在先前Day7時我們有聊到,在金融數據分領域上,常用的畫圖模組有兩個,分別是「Matplotlib」以及另一個是「Seaborn」,今天我們就先以「Matplotlib」為主來進行教學吧!!