---
# System prepended metadata

title: 第七週：第三方 JS 套件整合之術
tags: [JS 直播班 - 2024 秋季班]

---

# 第七週：第三方 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. 小組任務