2013年2月28日

圖表製作課程

每年在科展季節時看到學生們展出的看板,或是看科展群傑廳裡的得獎報告時,心裡常會有些惋惜。惋惜的是為什麼不把辛苦做出的實驗結果好好的呈現出來呢?

我自己也指導學生作科展,所以我可以料想背後的原因有兩種,一個是來不及,另一個則是根本沒發現自己圖表有什麼問題。

以往我的作法是,在我這組作專題的學生,我會在他們作圖的時候,才跟他們說要注意些什麼。但是其他組的學生我就沒辦法常常這樣做了,他們的圖表都是到了交件,沒時間可以改的時候我才看到。那時候再跟他們說,你們這個圖不行喔,我得到的回應往往是「來不及了」或是「我看別人都這樣作」

作一張圖要多久?你可能想,資料放進Excel拉一拉,頂多五分鐘就出來了吧?錯,如果你是認真作實驗,一張圖會用上個把月的時間,想想看,你這個圖是不是要作很多次實驗才能做出來?作實驗之前要不要充足的實驗設計?從實驗設計、執行、測量到最後的製圖,整個研究不就是為了那個結果圖表嗎?

圖到底有多重要?思考一下吧,如果你要在短短數分鐘內報告完你的實驗,你會用什麼樣的視覺媒材?最好的就是實驗設計圖、結果圖吧。又或是,你在讀別人的報告時,你會看的又是什麼部份呢?

一張圖可是歷經數週或是數月的努力,隨隨便便作一張圖,對不起自己,也對不起自己的實驗。

坦白說,圖的好壞不一定能影響科展結果。報告裡弄了爛圖表並不會因此而被扣分,因為大家都一樣爛,但是圖表作得好就有加分的效果,兩個水準相同的科學報告放在一起,一個有用心作圖,一個則是預設值直接出圖,到底哪個比較好,可想而之。所以這篇並不是一個教你做出一個會得獎的圖,而是要告訴你怎樣的圖才是讓人看得順眼的圖。

以下的圖片多是來自我幾年前寫的圖表製作原則與技巧,另外我再補一些說明圖進去。內容是參考自 Mary H. Briscoe "preparing Scientific illustration " 1995 Springer,以及林榮耀教授於2010科展指導教師研習營中的授課內容。我有將那些圖放在這個簡報檔中 圖表製作原則與技巧.ppt 

為了讓學生在正式進入研究前,對圖表資訊視覺化「有感」,所以我安排了三階段圖表製作的課程。

第一階段,講的是圖表製作的原則,並且讓學生就現有的專題或得獎科展中尋找有問題的圖進行評論與修改。

第二階段,講評學生修改後的圖片,再讓學生進行第二次修正,並且說明符合APA格式的圖表呈現方式以及文獻寫法。

第三階段,使用PowerPoint或是LibreOffice Draw進行向量圖表後製,以及儀器圖、流程圖繪製。這部份參考開南大學江易原老師的資料,OOoDraw 講義( ODG 檔,PDF 檔 )


圖表製作原則
先來講圖表製作原則,在科學實驗報告中,最常用到的圖有哪些呢?最多的就這三種,折線圖、長條圖和散布圖。每種圖用的時機都不太相同,折線圖適合用在強調數據隨時間/物理量變化的趨勢,如果X軸沒有連續,則線段不可連結。例如某個實驗做了觀察某裝置的溫度,一開始是每小時觀察一次,後來發現都沒什麼變,改成間隔1天觀察一次。那麼間隔一小時的數據線,和間隔一天的數據線就不該連在一起。而如果是要強調每個時間點或是物理量,兩組數據有什麼不同,那就會使用長條圖。

折線圖也很常出現在科學報告中,有些還會加上趨勢線,不過要注意的是並不是每種數據都可加趨勢線。


現在的試算表軟體都很厲害,還可以讓你選用立體圖,不過你要仔細思考一件事,呈現資料時要記得「少即是多」、「一目了然」。立體圖真的能正確呈現數據嗎?你有辦法看出裡頭數據的差異嗎?能夠一目了然嗎?大部分的數據用一般平面圖就可以呈現了,無須用到立體圖,不過這是原則,也許你會遇到某些數據真的要用立體圖來呈現,這也是有可能的。










除了那些圖表外,學生們應該都記得還有一個圓餅圖吧,你們有辦法分出這些項目之間的差異嗎?哪個最大?如果你真的有這麼多項目要互相比較,那麼你應該改用長條圖,或是改用表就可以了。









同樣的資料經過排序之後,再用表來呈現,就能一目了然知道哪個項目最多,哪個項目最少了。這時候可能有人就會想那我就把圖和表一起放就好了啊,這樣有圖又有表,不是很棒嗎?但是我倒是要請你想一下,如果你的數據光是用表就能看仔細,你有需要再放圖嗎?而且你的圖也沒辦法讓人看懂。

原則上一份資料不會既用圖又用表來呈現。











在實驗設計時,就應該先想好將來應該做出什麼圖。否則等到你真的在製作時,就會發現缺這缺那的。我們以這個某植物在不同光照條件下產氧量的實驗來說,這是一個很容易犯錯的實驗設計-樣本數太少,缺少重複。這樣的資料最後只能用單獨一組數據作比較,既沒有平均值,也沒有標準差。


因此我們應該在實驗設計時就先想好要重複幾組,通常我會建議學生重複5組。有了重複才能計算平均值和標準差。



在許多科學報告中,最常出現的問題就是把所有原始數據都放進去,沒有經過任何整理(我所說的整理並不是指對齊放進表格這件事情)。圖和表同時放進去也不好,各位看看,雖然底下那個圖我故意畫得很糟糕,不過當圖和表同時出現時,你是不是只會去看圖,而那個表幾乎都是省去不看。既然都不去看,那何必浪費篇幅放表呢?

以往我跟學生這樣說時,學生都會很為難,因為他們真的很想把原始數據放進去。原因不外是「我們作得真的辛苦很努力,想讓評審看到我們真的有作」(誰有空去瞄那個原始數據,評審又不是看原始數據在評的)、「別組的報告有20幾頁耶,我們不到10頁,如果放了原始數據進去,我們就可以超過他們了耶」(又不是在比厚度,放那麼多東西進去,都變成垃圾啦)。好吧,如果真的捨不得丟掉,那你就放附錄吧,雖然看的人也不會很多,但是至少可以滿足你們的。





若是要以表來呈現數據,那麼數據應該經過適當的整理,下圖兩個表是同樣的數據來源,這樣看,是不是比較容易讀呢?(其實這樣的數據應該要作圖比較好,不過這是舉例啦)



絕大多數的科展報告裡面,大家都直接用Excel做出的彩色圖,大小、顏色、圖例什麼都沒有改,就一股腦地全都塞進報告裡去。雖然讀的人還是可以勉強看得懂,但是你應該花時間去整理成容易讀懂的圖。



第一步驟就是要刪除多餘的元素,通常Excel會加入許多不需要的背景和格線,我的建議是背景刪掉,格線則視情況保留或刪除。

Excel預設是用不同的顏色來區辨資料,例如下左圖就是用藍色和黃色來分辨兩條線,如果你的資料組數更多,它就會用更多彩多姿的顏色來標示,這樣用色彩來標示編碼的模式在電腦上或是投影出來作簡報都還可以看,但是只要變成黑白影印時,一切就完蛋了。在作圖時,應該先預想「如果變成黑白,我的圖還能不能夠看得懂」,黑白模式能看懂的圖,在彩色模式絕對沒問題,但是彩色模式能看懂的圖,到了黑白模式就不一定了。

曾經有學生聽到我這麼說就不以為然地說,「那有什麼關係,反正我們就用彩色列印就好了啊」。說了他們也不聽,我就想「隨便你們啦,反正是你們的報告」,結果後來交報告的時候,他們發現已經印好的圖有重要地方需要更改,結果改了之後找不到能夠彩色列印的地方,後來只得印成黑白。印成黑白之後,多彩的顏色就成了各種不同的灰階色,根本就看不懂哪條是哪條,最後他們只得跑去外頭的便利商店,花了幾百元印彩色的圖。(反正就是死都不放棄彩色)


在Excel裡,線條和標記的顏色樣式都能夠修改



在作標示編碼時,樣式符號用「顏色對比」會好過用「形狀對比」,像一個白圈圈和黑圈圈的相比,就會好過圈圈和白三角,或是白圈圈和白方塊。那個白方塊雖然能夠和白圈圈分得出來,但在稍遠的距離時,方塊看起來就會變圓圈了。



以這三張圖來看,是不是以顏色(明度)對比的狀況會比較清楚辨別呢?


如果有需要用到以線條來編碼時,要注意虛線,這在印刷時可能會不清楚

加入誤差線才能夠讓讀者或聽眾了解你實驗裡頭數據的分散程度




為了突顯某段數據,研究者往往會做出不完整的Y軸(沒有從0開始),但這是不好的,Y軸應該從0開始。







電腦沒辦法自動加截斷標記時,我們只得自己作一個,就是先用白色的方塊擋住Y軸,再用兩條線畫出標記就可以了。



XY軸也應該有適當的長度,儘可能不要空一大塊在那邊。


也不要故意拉長或拉高XY軸,通常的建議會是兩者比例1:1、2:3或是3:4。



電腦預設的出圖會有許多刻度,你可以調整讓刻度少一些。刻度變少一點,會讓圖更容易看,通常會是5個到7個刻度。我看到有些報告放到20多個刻度,密密麻麻地,實在嚇人。


刻度選擇也要注意用容易判讀的數字,例如雙數2 4 6 8 10 ,或是間隔5的數字。

圖例是用來告訴讀者哪條線是什麼,但是許多圖例的擺法往往讓讀者需要來回移動視線,才有辦法判讀出誰是誰。遇到這種情況應該把圖例直接標示在資料旁,這樣才能一目了然。如果一定要畫圖例,也要記得圖例的順序應該盡量和線條的順序相同,這樣才能讓讀者快速找到線條的意義。

關於圖例的錯誤還包括,只是畫一條線的折線圖,旁邊卻還有個圖例標示著「數列1」,那樣就是多餘的圖例。


Y軸名稱的方向要顧慮容易閱讀的方向,如果都是中文就可以用直書方式,字少一點也可以用橫書,但是要注意版面設計不要留太大的空白。



遇到某些複雜的圖形時,可以將其拆解,不然一張圖上花花綠綠10多條線重疊在一起,能看懂的恐怕只有作者而已,不過通常的狀況是作者做完之後也看不懂。
除了拆解外,也要仔細思考你的圖真的要用折線圖嗎?也許改用長條圖就可以了。舉例來說,如果這個實驗是用ABC三種處理看種子發芽率,最後畫出來的圖就有些線條交雜在一起,若是有更多處理在其中,那麼線條就變得更複雜了,那時候你也只能用圖例框和多彩的顏色來標示,才能讓讀者看得出裡頭在講什麼。但你不妨想想,這個實驗的重點是要看時序的變化呢?還是看最終的結果?以這個實驗的發芽率來說,我們看的重點是幾天後的結果,至於中間的累計發芽率不是重點,所以你繪出的實驗結果應該只要取最後的發芽率就可以了,那麼像右下圖的長條圖就很棒了,另外也可以視實驗的變項,適當調整排列順序,把資料由高而低,或是由低而高排列,這麼一來就能明顯看出差異了。











若有兩兩相比的長條圖,可以改成很單純的黑白二色。




最後可以用以下兩張圖來訓練自己,看看有哪裡需要修正。










接著看幾個營養品廣告裡出現的圖表,這個《葡萄王靈芝王》12%的柱子不是4%柱子的三倍高。如果不是製圖疏忽的話,那麼有可能是因為由下而上的視角看立體柱狀圖。


《葡萄王極品樟芝》折線圖的橫軸沒有任何說明,無法得知高達9%代表的意義


從時間對數值的關係圖中看出某種處理能降低GOT、GPT值,但是我們想問的是,如果不處理,是不是也會降低呢?這樣的圖在學生的研究報告裡也常出現,問題的癥結點在於實驗設計中是否有對照組。如果有對照組,那麼我們預期在圖中會看到一條不會隨時間下降的線段,如此我們才能說這個處理能降低數值。不過實際上光看圖表是不夠的,應該輔以統計檢定。
葡萄王圖表3

我在上這課程的時候,最後還抱了十幾本各校資優班的專題研究成果集給學生,要他們找出有問題的圖表並說明原因。課堂上講了幾個誇張的圖表案例,學生可能都覺得老師在唬人,怎麼會有人這樣作,後來我拿專題研究成果集給他們看後,他們才發現,原來所有不可能的圖表都有可能出現。回家作業則是找出近兩年全國科展得獎作品中需改進的圖,附上原圖和評論,並繪製修正後的圖。

我的教學重點不在如何用試算表製作合宜的圖表,而是要看懂哪些是爛圖表。如果自己都不覺得自己的圖表爛,你根本就不知道如何改。這裡有學生們的第一次修改作業,有許多人已經進入狀況了。學生們找出的問題圖不少,沒事的人也可以練習一下如何debug。

在前面的課程評量中,並不強調一定得用電腦來改圖,我甚至希望他們都用手繪來作圖。我在作圖的時候,我會先手繪出怎麼排裡頭的元素,實際上機操作時才有方向。最後的課程我們會教的是怎麼改圖,無論是Excel或是libreoffice  Calc,要直接改裡頭的圖都有點困難,所以我們會借助其他軟體來改圖,以下是用PowerPoint來改圖。但我之後的課程應該會著重在使用自由軟體的libreoffice draw來作。






這部份的課程會放在拆解現有元素,我建議用試算表做好圖的雛型之後,細部微調可以交到Powerpoint或是Libreoffice Draw 去拆解組合。這有幾項好處,第一可以輕易做出印製文件所需的黑白模式圖,如果同時也需要彩色模式的圖,也可以同時複製製作。第二,拆解後,可用在簡報中,製作互動式圖表。詳細操作過程,我這篇《用PowerPoint裡作互動式動畫圖表》有寫過。

2013年2月13日

你有多少列祖列宗

過年時候我們一家人坐在桌前,某個話題聊著聊著突然提起了我是族譜裡記載的簡家入閩始祖的第22代子孫,這數字看起來沒什麼,但我突然想起李筱峰教授寫的「族譜的問號」一文。簡家子孫的我,和那位入閩始祖有多少的遺傳相似度呢?

拿筆起來計算一下吧,我的前一代有2人(父、母),前二代有4人(爺爺、奶奶、外公、外婆),前三代有8人...,前n代有2的n次方個人,一路算到前21代,也就是我那第一世的祖先,其實不是只有他一人,而是有2的21次方個人,那是2097152個人(兩百零九萬七千一百五十二個人)。這也就是說在八百年前,我可是有兩百多萬個祖先呢!他們彼此通婚之後生下的小孩,各自結婚,一路生一路結,最後才會有我的出現。

如果把列祖列宗全部都算進去的話,那才夠嚇人的。第一代的兩百多萬人,加上第二代的一百多萬人,一路加到我前一代的兩人,那麼祖宗21代的總和是4194302(四百一十九萬四千三百零二人)。

如果每個祖先都給個30公分高的神主牌,這樣祖宗21代的神主牌總和可是將近2477個台北101之高呢!
4194302人 x 0.3 公尺 /508公尺 = 2476.95


如果每個祖先都給個兩坪(6.6平方公尺)的墓地安葬 ,那麼也要65910個籃球場的大小啊!
4194302人x 6.6平方公尺 /(28公尺 x15 公尺 )=65910.46

不過實際數字應該會比這個少一些,因為這個數字是假設通婚的人彼此之間沒有任何血緣關係,應該還是會有近親或遠房通婚的現象出現。除此之外,我這四百多萬人的祖先也不是只有我獨享,我和你應該有不少共享的祖先呢(什麼好康的都能共享,祖先也不例外)


這些數字讓我想起,常有新聞寫著「OOO是XXX的第幾世子孫,所以...」,以我而言,我和第一世的簡氏祖先居然也只有200萬分之一的相似度。我若是要沾那位祖先的光,說因為他怎樣怎樣,所以我才能怎樣怎樣,實際上是忽略了其他那另外兩百萬的祖先哪。

不過雖說如此,我和那第一世的男性祖先也還是有高於其他人的相似度啦,也就是那Y染色體(Y染色體只有父傳子)。不過這前提是從父親、祖父、曾祖父..一路上去都沒有人是入贅的,若是有的話,我這「簡」姓就不是跟著Y染色體的遺傳,而是習俗和文化上的遺傳囉。

註:入贅就是男子如同出嫁一般,嫁入女性的家庭,其生下的小孩是從母姓。

2013年2月8日

香蕉刺青

有天在Instructables看到一個很有趣的Project-如何作香蕉刺青,循著文章還看到了作者的網站 http://www.philinthewhaaat.com/及影片,看著我都忍不住手刀去買了一串香蕉回來作藝術了。



香蕉的果皮細胞被破壞時,細胞內部的酵素( 多酚氧化酶,polyphenol oxidase )的作用,會使果皮產生黑斑,本來是個會令人皺眉頭的反應,在藝術家的創意之下,變成了可以在香蕉上刺青的方法。

這個Project非常簡單,只要一根香蕉和針就行了!


IMG_0683

要產生深淺不同顏色可以用不同密度的點,也可以用線條交叉來表現。

IMG_0691


為了顯示我也是有藝術天份的,所以除了寫字以外,我也畫了個人頭。隨手放在雜誌廣告上,突然覺得很相稱,不知道為什麼?

IMG_0694



不過我覺得最能表現真善美的手法,莫過於此了。這可以讓初上市場的人們免於慌張,你瞧這香蕉多麼善良,直接就告訴你了「我是香蕉」。
IMG_0693

從科學魔法車改來的網球拍自動揮拍裝置

雖然自己帶的科展專題是生物組的,不過偶爾我也會跑去其組去看看他們作些什麼,有沒有需要協助的。去年我們有個學生王政傑自己發展了一個作品是研究網球擊球的甜蜜點,他自己做了一個網球擊球器,把網球拍和一些機械裝置結合,球拍一放開就會自動揮拍。

實驗的基本設備要能作到球從斜坡滾下來時,球拍能剛好揮拍擊中球,原本他的想法是A負責放球,B負責放開球拍,但是B要能準確判斷何時該放開球拍,這是個大問題。

後來我想起了以前玩過的洛奇機器人DIY科學魔法車,裡面有個電路改一改,應該可以解決這樣的問題。所以我就把第3課 光影及溫度的電路圖和和零件丟給學生自己去組,跟他說一下應該怎麼改,他自己摸了一兩個禮拜,居然也成功組好了。

這個自動控制的電路是這樣的,首先是用電磁鐵通電吸住綁住球拍的金屬架,電磁鐵通電的時候,球拍處於待命狀態,等到電磁鐵一斷電,球拍就會自動揮動。而什麼時候要斷電呢?就靠球滾落的斜坡上架設一個光敏電阻和雷射筆組成的閥門。

光敏電阻持續被雷射光照射的時候,電阻降低,所以電壓高於2.25V(4.5/2),透過反向器4069就會送出0的訊號,使電晶體C1815和繼電器都沒辦法通電。而電磁鐵接在NC上,就會一直被通電,吸住球拍。

當球滾落斜坡時,阻擋雷射光照射光敏電阻,因此電阻會升高,電壓就會降到低於2.25V,透過反向器,就會送出1的訊號,最後會使得繼電器通電,讓電磁鐵斷電,這樣就可以讓球拍揮拍了。

自動控制揮拍

能做到這個自動控制的裝置,真是要感謝發明科學魔法車的曹齊平老師,使用的電子零件簡單易取得的,不像樂高機器人那樣得花上大筆金錢。最棒的是那些講義說明的淺顯易懂,我和學生動點腦筋就能夠讀懂,甚至國小學生也會作。誠心推薦,如果想要入門這塊的,不妨去買來玩玩看,花點巧思也可以想出其他利用。

2013年2月4日

RS232初體驗--二氧化碳濃度計

去年年底學校採購了一個CO2濃度計,翻使用說明書的時候發現這個機器有RS232的輸出功能。


在此之前沒摸過RS232的什麼東西,只是約略知道這可以讓訊號送進電腦。要說類似的東西,大概就是像Arduino把訊號送進電腦那樣。如果可以把CO2計接上電腦,那之後的應用面就蠻多的了,因為可以長時間的紀錄。

不過面臨到第一個問題就是沒有連接線,得要自己作,還好說明書寫的很清楚,只要一個3.5mm的公接頭插進機器,中間的pin接到RS232  9pin接頭的pin 4  ,Ground接到  pin 2,然後pin 2和pin 5之間串聯一個2.2K電阻。這個不算太難,後來我買了一個公對母的連接線,把公頭拆了照著上面的作法來接就成了。

這要特別紀錄一下,剪下接頭之後,哪條線屬於哪個pin,一時還搞不清楚,因為9條線就有9種顏色,但是忽然間想起了電阻的顏色代碼,黑棕紅橙黃綠藍紫灰白,該不會就跟這有關係吧。用三用電表一測,啊!果然有關。pin 2是棕色、pin 4是橙色、pin5是黃色。

接好了線之後,下一步就是電腦要跟它連線了。

因為平常我用Linux,但是以後給學生用的話,可能還得用windows,所以兩個系統都得找軟體來相連。


Linux
linux下最簡單的方式就是用cat ,直接下指令   cat /dev/ttyS0 
如果還要設baud rate 為9600 ,那就用   stty -F /dev/ttyS0 9600 ,不過預設就是9600,所以不需要設。要看設定值,就用 stty -F /dev/ttyS0 

但是這樣有點麻煩,於是找了Serial port的軟體 cutecom來玩,設定還蠻簡單的,也很容易就從機器裡得到數值,但是有另外的問題出現了,那就是沒有時間戳記。對一個Date Logger 來說,沒有時間戳記就像是少了手腳一樣。

後來從這個論壇文章中找了一些指令來下,此外,這篇文件也寫了一些方法。
cat /dev/ttyACM1 | awk '{print strftime("%Y-%m-%d %H:%M:%S "), $0; }'>>com.txt
cat /dev/ttyACM1 | awk '{print strftime("%T"), substr($1,12,8); }'>>com.txt
awk '{print strftime("%T"), substr($1,12,8); }' /dev/ttyACM1>>com.txt

另外可開一個視窗,用這個指令來檢查
tail -f com1.txt


另外方法是用jpnevulator去接收,下面這樣是可以同時有timestamp,也有機器數值,但是輸出的文字檔案不夠漂亮,得再整理過才行。
jpnevulator -g --tty /dev/ttyS0 --read  > com1.txt


Windows

windows下的就簡單很多了,只要用Tera Term,照著設定就可以有Timestamp的Log檔囉。

Serial Port 的設定



Terminal要設定換行,不然就看不到歷史數據了



紀錄檔的設定



選擇存放位置,另外左下角的時間一定要打勾



這樣就有一系列的數據可供使用了
 

後來我找其他RS232的硬體時,看到我以前買的那台Garmin 60CSx也有RS232的輸出功能,只要找個Garmin connector,或者自己做一條,程式處理一下就可以把GPS的訊號和二氧化碳、溫度訊號結合在一起,那麼這樣也許可以有什麼發展呢!