Echarts製作一張全球疫情圖

春日宴發表於2021-02-19

前言

效果圖:

一、獲取全球疫情資料

1)獲取API

使用用友提供的新冠肺炎實時資料,登入註冊之後可以免費使用。

2)點選使用者資訊

這裡的AIPCODE,複製並儲存,用於後續的使用。

3)API的使用

用友有提供一個 eclipse 的使用說明。

本文采用 IDEA 搭建 Maven 進行使用

1. 首先配置 maven 環境

可以參考 Maven 環境配置,按照配置很簡單,記住按照路徑即可,方便後續使用

2. 使用 IDEA 新建一個 Maven 專案



3. 在 setting 裡更改maven的設定

選為更改下載的 maven 的路徑,可能需要安裝什麼,等待他安裝完成即可。

4. 開啟Project Structure

更改為本地的JDK,否則可能會提示版本問題。


5. 引入 Jar 包

在 pom.xml 中引入,點選Import Changes,等待安裝完成

  <dependencies>
        <dependency>
            <groupId>org.json</groupId>
            <artifactId>json</artifactId>
            <version>20180130</version>
        </dependency>
    </dependencies>

6. 新建一個 JAVA Class

將用友提供的疫情全球程式碼複製進去。

7. 更改APICODE,執行

這裡更改為剛剛儲存的 API 碼即可。

如果程式碼有錯誤提示,根據 IDEA 提供的更改建議進行更改。就一處錯誤。然後執行。

成功獲取到資料。

如果出現版本錯誤,再按剛剛的步驟看一下哪個版本沒有更改。

8. 編寫一個函式,將獲取到的資料進行儲存。

在getRequest函式中進行呼叫。

再次執行,就會發現獲得了一個 Cov2019.json 檔案

private static void saveDataToFile(String data) {
        BufferedWriter writer = null;
        File file = new File("cov2019.json");
        //如果檔案不存在,則新建一個
        if(!file.exists()){
            try {
                file.createNewFile();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        //寫入
        try {
            writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file,false), "UTF-8"));
            writer.write(data);
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            try {
                if(writer != null){
                    writer.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        System.out.println("檔案寫入成功!");
    }

二、資料處理

資料處理使用 PyCharm 進行。

1. 新建一個專案

2. 搭建一個環境

更改 python 的環境

3. 新建一個 py 檔案,並觀察 cov2019.json 檔案

json 檔案主要是層級遞進的關係,我們需要的是 country 部分
所以我們可以使用 Json 庫進行處理。
在處理的過程中會發現,每個洲其實都有一個 country 部分
所以我們需要先去除每個洲,然後再提取美國國家資料。

4. 編寫程式碼

處理成方便後續視覺化的格式。

# -*- coding = utf-8 -*-
# @Time :2021-02-19 0:31
# @Author: LinJH
# @File : DealData.py
# @Software: PyCharm

import json


def DealFile():
    with open('../GetData/cov2019.json', 'r', encoding="utf-8")as f:
        data = json.load(f)
        # print(data)
        DealDate(data)


# 初步提取資料
def DealDate(data):
    data = data["data"]["continent"]
    Asia = data[0]["country"]
    Europe = data[1]["country"]
    NorthAmerica = data[2]["country"]
    SouthAmerica = data[3]["country"]
    Africa = data[4]["country"]
    Oceania = data[5]["country"]
    country = Asia + Europe + NorthAmerica + SouthAmerica + Africa + Oceania

    DealCountry(country)


# 資料格式進行處理
def DealCountry(country):
    for i in range(len(country)):
        name = country[i]["provinceName"]
        value = country[i]["confirmedCount"]
        ChangeDate(name, value)


countryList = []

LList=[]
def ChangeDate(name, value):
    # 讀取國家名稱中文轉英文資料
    with open('countryC2E.json', 'r', encoding='utf-8') as f:
        c2e = json.load(f)

    try:
        countryDict = {}
        countryDict["name"] = c2e[name]
        countryDict["value"] = value
        countryList.append(countryDict)

    except:
        LList.append(name)

# 資料儲存
def SaveDate(country):
    # DataDict={}
    # DataDict["data"] = country
    with open("cov2019_deal.json", 'w', encoding="utf-8") as f:
        json.dump(country, f)
        print("儲存成功!")


if __name__ == '__main__':
    DealFile()
    SaveDate(countryList)

三、資料視覺化

1)使用模板,直接引入

沒做動態載入的,單一檢視。

四、原始碼地址

GitHub

參考資料

GitHub
World Population (2010)
怎麼引入org.json的依賴?

相關文章