Echarts製作一張全球疫情圖

  • 2021 年 2 月 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的依賴?