# 第七週:第三方 JS 套件整合之術
## 開課提醒
1. 錄影
2. [第六週週報](https://liberating-turtle-5a2.notion.site/EP6-d3706659b7a24e7da6c5e3a1af336193?pvs=4)
3. 下一堂課沒有主線任務,讓大家專注在影音課程 axios 接 API 上
## 今日上課知識點
1. C3.js
2. 將資料處理成套件要的格式
---
## C3.js
1. [環境安裝](https://c3js.org/gettingstarted.html)
* 載入 C3 css
```html
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/c3/0.7.18/c3.css">
```
* 載入 d3.js and c3.js
```javascript
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/5.16.0/d3.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/c3/0.7.18/c3.js"></script>
```
2. 圖表進入點
```html
<div id="chart"></div>
```
3. 圖表 JS 設定
```javascript
const chart = c3.generate({
bindto: '#chart', // HTML 元素綁定
data: {
columns: [
['data1', 30, 200, 100, 400, 150, 250],
['data2', 50, 20, 10, 40, 15, 25]
] // 資料存放
}
});
```
> [完整範例](https://codepen.io/hexschool/pen/poRzRXW?editors=1000)
其他用法:
* [折線圖增加時間軸](https://codepen.io/hexschool/pen/dyNbvOb?editors=1010)
> 補充: [時間軸改變時間格式](https://codepen.io/hexschool/pen/GRzyvpQ?editors=1010)
* [變更圖表 type 圓餅圖](https://codepen.io/hexschool/pen/bGgbgXB?editors=1010)
* [修改顏色與標題](https://codepen.io/hexschool/pen/NWdKpXw)
## 資料處理
* 用套件不難,**工程師的價值在整合**
* 需將原始資料改為套件要的格式,[範例](https://codepen.io/hexschool/pen/xxgGggO?editors=0010)
### 觀念一:物件數據蒐集
* [計算陣列裡面各地區人數](https://codepen.io/hexschool/pen/wvgwoBj?editors=0011)
* [第五關小組任務最後一題](https://codepen.io/hexschool/pen/yLgNVWZ)、[原始資料](https://cabu4.kcg.gov.tw/KcgRegion/OpenData/%E9%87%8C%E9%95%B7%E9%80%9A%E8%A8%8A%E9%8C%84.JSON)
### 觀念二:Object.key 做資料關聯陣列再處理
Object.key 用途:將所有屬性撈出來,變成一個陣列
```javascript=
const totalObj = {高雄: 2, 台北: 1, 台中: 1};
const areaAry = Object.keys(totalObj);
// area output ["高雄","台北","台中"]
```
* 用途一:[透過資料關聯,做物件取值](https://codepen.io/hexschool/pen/PoWqWPQ)
* 用途二:[重組陣列資料 I](https://codepen.io/hexschool/pen/eYxyEgN?editors=0010)
* 用途三:[重組陣列資料 II-為 C3.js 所用](https://codepen.io/hexschool/pen/YzBYxNE?editors=1011)
### 資料處理好,套用至 C3
* [資料處理完整程式碼](https://codepen.io/liao/pen/VwzqQrw?editors=0010)
* [AJAX+資料處理+C3](https://codepen.io/hexschool/pen/VwPwRyd?editors=0010)
* [AJAX+資料處理+C3+本地端新增資料](https://codepen.io/hexschool/pen/ExZxMpv)
### 其他範例
* [前後端男女性比例](https://codepen.io/liao/pen/XWaoaxV?editors=1010)
* [上屆學長姐 BMI kata 投稿人數折線圖(時間序列折線圖)](https://codepen.io/liao/pen/LYjMjqX?editors=1010)
---
## 本週任務
1. 主線任務
2. 小組任務