Echarts制作一张全球疫情图
目录
前言
效果图:
一、获取全球疫情数据
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)使用模板,直接引入
没做动态加载的,单一视图。