六、Develop in Swift Explorations-Data Visualization
本文為Develop in Swift Explorations-2–2 Play With Programs — Data Visualization練習。
使用 API 製作出三種Data Visualization:
- Pie Chart 圓餅圖
- Bar Charts 長條圖
- Scatter plot 散點圖
一、Pie Chart 圓餅圖
Function addWedge:增加圓餅區塊
withProportion:介於0~1之間,型別為Double。
color:在顏色之前加上「.」
只單用這個函數當然無法檢查總數是否為1,所以可能會發生如下圖總數超過100%的情況。
Function addKeyItem:增加圖表標籤
withLabel:標籤的名稱,型別String。
color:在顏色之前加上「.」,另外顏色應與圓餅圖上該對應楔形一樣。
Creating a pie chart with my own data:上班族學寫扣的一天
一天有24小時,所以輸入withProportion時我用時間除以24小時,省去另外計算的時間。(不確定會不會在一定程度上影響程式效能)
二、Bar Charts 長條圖
Function addBar:類似於addWedge函數
withLength:介於0~1之間,型別為Double。
color:在顏色之前加上「.」
Function setYAxis:設定 Y 軸的最大和最小值。
minimum:型別為Double。如withLength參數低於這個值,它將不會在圖表中顯示。可以為負數。
maximum:型別為Double。如withLength參數高於這個值,它將延伸超過圖表,無法顯示正確數值。可以為負數。
Function addBarLabel:設定X軸標籤
只有一個參數,型別為String。因為在參數名稱前面有一個底線,所以呼叫函數時可以不用輸入「name」。
標籤將均勻地出現在X軸下方,所以如果呼叫addBarLabel次數與呼叫addBar的次數相同,標籤將也對應的平均分佈於圖表上。
Creating a bar charts with my own data:CIRCLE Chart專輯銷售排行(2023.03.19~2023.03.25)
其實一開始想找台灣專輯銷售量,但發現不像日韓專輯銷售榜會公布銷售量,台灣唱片行傾向公布銷售率。(此情況倒是適合做成圓餅圖)
也順便請chatGPT寫寫看 ,他很貼心的幫我每一行加上註解。指定他用api函數寫即可。不指定的話他就會一行一行慢慢刻。
三、Scatter plot 散點圖
Function addPointAt:
X:X座標,型別為Double。可以為負數。
Y:Y座標,型別為Double。可以為負數。
Color:需在顏色之前加上「.」
Function setXAxis:
minimum:型別為Double。
maximum:型別為Double。
Function setYAxis:
minimum:型別為Double。
maximum:型別為Double。
Creating a scatter plot with my own data:2022年CIRCLE Chart韓國銷前十專輯銷量與該專輯發售當月銷量比較
部分團體專輯名稱因為字數太長而被折半,推測應該是Playgound的限制。NCT兩個團的專輯名稱直接不見了。現在年輕人的團體好像很喜歡跟大家說這是第幾張。
最後暫時的解決方法是:刪掉。
一般寫app時應可以設定字數大小。
makePlot()
//發售當月銷售量
setXAxis(minimum: 1_000_000, maximum: 3_000_000)
//年銷售量
setYAxis(minimum: 1_000_000, maximum: 4_000_000)
addPointAt(x: -2_957_410, y: 3_482_598, color: .red)
addPointAt(x: 1_546_907, y: 3_176_233, color: .black)
addPointAt(x: 2_239_351 ,y: 2_867_353, color: .blue)
addPointAt(x: 2_457_206, y: 2_522_941, color: .magenta)
addPointAt(x: 1_646_949, y: 2_095_544, color: .orange)
addPointAt(x: 1_704_782, y: 1_825_170, color: .gray)
addPointAt(x: 1_632_824, y: 1_806_679, color: .green)
addPointAt(x: 1_645_255, y: 1_803_050, color: .lightGray)
addPointAt(x: 1_546_907, y: 1_762_168, color: .yellow)
addPointAt(x: 1_110_177, y: 1_652_402, color: .purple)
addKeyItem(withLabel:"BTS 《Proof》", color: .red)
addKeyItem(withLabel: "StrayKids 《MAXIDENT》", color: .black)
addKeyItem(withLabel: "SEVENTEEN 《FacetheSun》", color: .blue)
addKeyItem(withLabel: "BLACKPINK 《BORN PINK》", color: .magenta)
addKeyItem(withLabel: "NCTDREAM 《GlitchMode》", color: .orange)
addKeyItem(withLabel: "NCT127 《疾馳(2Baddies)》", color: .darkGray)
addKeyItem(withLabel: "TXT 《minisode2:Thursday`sChild》", color: .green)
addKeyItem(withLabel: "aespa 《Girls-The2ndMiniAlbum》", color: .lightGray)
addKeyItem(withLabel: "StrayKids 《ODDINARY》", color: .yellow)
addKeyItem(withLabel: "IVE 《AfterLIKE》" ,color: .purple)ㄋ
playground 的自動執行
原來Develop in Swift Explorations所附的作業檔案是預設Automatically Run的,在跑最後一個散點圖的時候我感受到M1 MacBook Air 16G的極限,就這樣閃退了。
Automatically Run這個功能我以前短暫的開過,在學for loop解題時把電腦搞瘋了(無極限跑不完嘻嘻)。
只要在三角形右下角的⌄長按,就可以開啟選單,改成手動!
不是按右鍵,也不是按左鍵,而是長按。
參考:
Develop in Swift Explorations
2–2 Play With Programs — Data Visualization
進階題為 3–2 Play With Complex Data 的 Visualization Revisited,留待下一篇學習。