繪製圓餅圖
這篇教學會利用 Scratch 的畫筆功能,搭配簡單的「畫圓」數學式,根據清單的數值,在畫布裡快速繪製圓餅圖。
快速導覽:
圓形 ( 圓餅圖 ) 公式
圓餅圖其實是「圓形」圖案的變形版本,差別在於圓形要繪製一整圈 360 度,圓餅圖則只需繪製固定的角度,繪製圓形的公式如下:
- 圓心:(x0,y0)
- 半徑:r
- 夾角:θ ( 角度 )
- 圓周上每個點的 x = x0 + r × cos(θ)
- 圓周上每個點的 y = y0 + r × sin(θ)
繪製圓形與扇形
首先使用「繪圖」工具建立一個「空白」的角色,空白的角色表示只有一個造型,且造型為空。
根據公式撰寫程式,使用重複 360 次的方式 ( 圓周為 360 度 ),就能將角色定位在圓形圓周的每個點的座標上,運用畫筆就能畫出一個圓心 (0, 0) 半徑 100 的空心圓形。
由於 Scratch 的重複迴圈搭配定位積木,預設有 0.03 秒的等待時間,完成後點擊綠旗就會看見舞台上「逐漸顯示」圓形。
如果要將圓形改成扇形,則要從「圓心下筆」,下筆後將座標移動到圓形的圓周,等待前往指定的角度後,再將畫筆移動回圓心。
完成後點擊綠旗就會看見舞台上「逐漸顯示」扇形。
使用函式,勾選執行完畢再更新畫面
為了避免 Scratch 預設的 0.03 秒延遲,造成緩慢的繪圖過程,可以新增一個名為「繪製圓形」的函式,勾選「執行完畢再更新畫面」,勾選後 Scratch 就會在函式裡取消預設的等待延遲。
將剛剛繪製圓形的程式積木放到函式裡,執行函式後,舞台上就會立刻出現一個圓形。
為了讓函式更能夠「重複利用」,編輯「繪製圓形」函式,替函式加上 x、y、r 和 angle 四個參數與說明文字,如此一來就能單純改變參數,重複利用函式。
將函式的參數按照下圖放到指定的位置,並在繪圖結束後停筆。
完成後執行程式,舞台中就會立刻出現兩個圓 ( 因為執行不同參數的函式兩次 )。
下圖的程式碼執行後,會在舞台中畫出兩個扇形。
繪製圓餅圖
圓餅圖的原理就是「多個扇形的組合」,首先在原本的扇形程式碼裡,加入「返回圓心」的積木,執行後就會產生許多「密集的放射線」,這些放射線只要足夠密集,就能產生「實心」的扇形,以下圖為例,如果以每隔一度的方式繪製放射線,還是會看到一些背景顏色 ( 放射線越往外,彼此的間距就會變大 )。
修改程式碼,將重複的次數增加 10 倍,每次重複改變的角度改為 1/10 倍,就能得到漂亮的實心圖案。
為了可以調整扇形的「起始角度」和「顏色」,按照下圖將「繪製圓形」函式改名成「繪製扇形」,並加入 deg1、deg2 和 color 參數 ( deg1 由 angle 參數修改而來 )。
修改函式內容,將 deg1、deg2 和 color 參數放入指定的位置,並增加 repeat 參數計算重複次數,因為在 deg2 大於 deg1 的正常狀態下,扇形會「逆時針」繪製,但如果 deg1 大於 deg2 就會變成順時針繪製,為了避免這個狀況,需要將 deg2 增加 360,才能正常的逆時針繪圖。
此外將原本筆跡顏色積木,改成可以透過數字調整的「筆跡顏色設定」積木,並加入筆跡亮度 100 積木。
多次執行函式,就能在舞台中畫出圓餅圖。
根據資料繪製圓餅圖
在點擊綠旗的時候,新增 data 清單和 total 總數,參考下圖,在清單裡加入 5~10 筆 100~1000 的隨機數,並計算清單數值的總和。
新增名為「繪製圓餅圖」函式,勾選「執行完畢再更新畫面」。
參考下圖編輯函式內容,讓函式可以根據資料和資料總和的關係,計算出起始角度和結束角度,並呼叫「繪製扇形」函式進行繪圖。
完成後,執行函式,就能夠根據資料,得到漂亮的圓餅圖。
範例解答
範例解答:Scratch 教學 - 繪製圓餅圖
意見回饋
如果有任何建議或問題,可傳送「意見表單」給我,謝謝~