六、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)

其實一開始想找台灣專輯銷售量,但發現不像日韓專輯銷售榜會公布銷售量,台灣唱片行傾向公布銷售率。(此情況倒是適合做成圓餅圖)

人工的成份多。丟給AI應能自動生成。但目前我是學生的身份,還是需要手動寫一次感受。

資料來源

也順便請chatGPT寫寫看 ,他很貼心的幫我每一行加上註解。指定他用api函數寫即可。不指定的話他就會一行一行慢慢刻。

然後實際去playground跑跑看就可以發現一堆紅色提醒,要再自己修改

三、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時應可以設定字數大小。

啊那你們如果出到幾千張專輯是不是要寫The5430thMiniAlbum?(坐上滑坡划水道)
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解題時把電腦搞瘋了(無極限跑不完嘻嘻)。

只要在三角形右下角的⌄長按,就可以開啟選單,改成手動!

不是按右鍵,也不是按左鍵,而是長按。

我們就可以獲得一個雖然有些些不方便,但是可以確保電腦不會牙起來的Xcode playground

參考:

Develop in Swift Explorations

2–2 Play With Programs — Data Visualization

進階題為 3–2 Play With Complex Data 的 Visualization Revisited,留待下一篇學習。

--

--