爬蟲爬取新冠肺炎統計數據,matplotlib數據可視化

每日新增疑似和湖北省內外確診對比

在這裏插入圖片描述

import json
import requests
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np

url="https://view.inews.qq.com/g2/getOnsInfo?name=disease_h5"
resp=requests.get(url)
html=resp.json()
data=json.loads(html["data"])

chinaDayAddList=data["chinaDayAddList"]
dailyNewAddHistory=data["dailyNewAddHistory"]
print(chinaDayAddList)
da=[]
for i in range(len(chinaDayAddList)):
    da.append([chinaDayAddList[i]["date"],chinaDayAddList[i]["confirm"] , chinaDayAddList[i]["suspect"], chinaDayAddList[i]["dead"],chinaDayAddList[i]["heal"],chinaDayAddList[i]["deadRate"],chinaDayAddList[i]["healRate"],dailyNewAddHistory[i]["hubei"],dailyNewAddHistory[i]["notHubei"]])
print(da)

df = pd.DataFrame({})
df["date"] =  [x[0] for x in da]
df["confirm"] = [x[1] for x in da]
df["suspect"] =  [x[2] for x in da]
df["dead"] =  [x[3] for x in da]
df["heal"] =  [x[4] for x in da]
df["deadRate"] =  [x[5] for x in da]
df["healRate"] =  [x[6] for x in da]
df["hubei"] =  [x[7] for x in da]
df["notHubei"] =  [x[8] for x in da]
print(df)
fig = plt.figure(figsize=(10, 5))
count = df.count()['date']
index = np.arange(count)
df['index'] = index
print(df)
#設置橫座標間隔
limit=1
# 設置橫座標的刻度與顯示標籤
plt.xticks(index[::limit], df['date'][::limit],rotation=90)
plt.title("每日新增疑似和湖北省內外確診對比")
ax1 = plt.gca()
#設置座標標題
ax1.set(xlabel='date', ylabel='人數')
#解決畫圖中文亂碼問題
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
line1, = ax1.plot(index, df['confirm'], color='black',linestyle= '-',linewidth=2,alpha=0.9,label='confirm')
line2, = ax1.plot(index, df['suspect'], 'grey', label='suspect')
line3, = ax1.plot(index, df['hubei'], color='black',linestyle= '--',linewidth=2,alpha=0.9, label='hubei_confirm')
line4, = ax1.plot(index, df['notHubei'],color='black',linestyle= ':',linewidth=2,alpha=0.9, label='notHubei_confirm')
#設置圖例
plt.legend(handles=[line1, line2,line3,line4])
plt.show()

每日新增死亡和治癒

在這裏插入圖片描述

import json
import requests
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np

url="https://view.inews.qq.com/g2/getOnsInfo?name=disease_h5"
resp=requests.get(url)
html=resp.json()
data=json.loads(html["data"])
chinaDayAddList=data["chinaDayAddList"]
print(chinaDayAddList)
print(len(chinaDayAddList))
da=[]
for i in range(len(chinaDayAddList)):
    da.append([chinaDayAddList[i]["date"],chinaDayAddList[i]["confirm"] , chinaDayAddList[i]["suspect"], chinaDayAddList[i]["dead"],chinaDayAddList[i]["heal"],chinaDayAddList[i]["deadRate"],chinaDayAddList[i]["healRate"]])
print(da)
df = pd.DataFrame({})
df["date"] =  [x[0] for x in da]
df["confirm"] = [x[1] for x in da]
df["suspect"] =  [x[2] for x in da]
df["dead"] =  [x[3] for x in da]
df["heal"] =  [x[4] for x in da]
df["deadRate"] =  [x[5] for x in da]
df["healRate"] =  [x[6] for x in da]
print(df)
fig = plt.figure(figsize=(10, 5))
count = df.count()['date']
index = np.arange(count)
df['index'] = index
print(df)
#設置橫座標間隔
limit=1
# 設置橫座標的刻度與顯示標籤
plt.xticks(index[::limit], df['date'][::limit],rotation=90)
plt.title("每日新增死亡和治癒")
ax1 = plt.gca()
ax2 = ax1.twinx()
#設置座標標題
ax1.set(xlabel='date', ylabel='人數')
ax2.set(xlabel='date', ylabel='百分點')
#解決畫圖中文亂碼問題
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
line1, = ax1.plot(index, df['dead'], color='black',linestyle= '-',linewidth=2,alpha=0.9, label='dead')
line2, = ax1.plot(index, df['heal'], color='g',linestyle= '-',linewidth=2,alpha=0.9, label='heal')
line3, = ax2.plot(index, df['deadRate'], 'black', linestyle= '--',linewidth=2,alpha=0.9,label='deadRate')
line4, = ax2.plot(index, df['healRate'],'g',linestyle= '--',linewidth=2,alpha=0.9, label='healRate')
#設置圖例
plt.legend(handles=[line1, line2,line3,line4])
plt.show()

累計確診、現存確診、疑似及重症

在這裏插入圖片描述

import json
import requests
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np

url="https://view.inews.qq.com/g2/getOnsInfo?name=disease_h5"
resp=requests.get(url)
html=resp.json()
data=json.loads(html["data"])

chinaDayList=data["chinaDayList"]
# dailyDeadRateHistory=data["dailyDeadRateHistory"]
da=[]
for i in range(len(chinaDayList)):
    da.append([chinaDayList[i]["date"],chinaDayList[i]["confirm"] , chinaDayList[i]["suspect"], chinaDayList[i]["dead"],chinaDayList[i]["heal"],chinaDayList[i]["deadRate"],chinaDayList[i]["healRate"],chinaDayList[i]["nowConfirm"],chinaDayList[i]["nowSevere"]])
print(da)

df = pd.DataFrame({})
df["date"] =  [x[0] for x in da]
df["confirm"] = [x[1] for x in da]
df["suspect"] =  [x[2] for x in da]
df["dead"] =  [x[3] for x in da]
df["heal"] =  [x[4] for x in da]
df["deadRate"] =  [x[5] for x in da]
df["healRate"] =  [x[6] for x in da]
df["nowConfirm"]=[x[7] for x in da]
df["nowSevere"]=[x[8] for x in da]
print(df)
fig = plt.figure(figsize=(10, 5))
count = df.count()['date']
index = np.arange(count)
df['index'] = index
print(df)
#設置橫座標間隔
limit=1
# 設置橫座標的刻度與顯示標籤
plt.xticks(index[::limit], df['date'][::limit],rotation=90)
plt.title("累計確診和疑似")
ax1 = plt.gca()
#設置座標標題
ax1.set(xlabel='date', ylabel='人數')
#解決畫圖中文亂碼問題
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
line1, = ax1.plot(index, df['confirm'], color='black',linestyle='-',linewidth=2,alpha=0.9, label='confirm')
line2, = ax1.plot(index, df['suspect'], 'grey',linestyle='-',linewidth=2,alpha=0.9, label='suspect')
line3, = ax1.plot(index, df['nowConfirm'], color='black',linestyle='--',linewidth=2,alpha=0.9, label='nowConfirm')
line4, = ax1.plot(index, df['nowSevere'], 'r',linestyle='-',linewidth=2,alpha=0.9, label='nowSevere')
#設置圖例
plt.legend(handles=[line1, line2,line3,line4])
plt.show()

累計死亡和治癒

在這裏插入圖片描述

湖北內外治癒率、死亡率

在這裏插入圖片描述

import json
import requests
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np

url="https://view.inews.qq.com/g2/getOnsInfo?name=disease_h5"
resp=requests.get(url)
html=resp.json()
data=json.loads(html["data"])
# chinaDayList=data["chinaDayList"]
dailyDeadRateHistory=data["dailyDeadRateHistory"]
dailyHealRateHistory=data["dailyHealRateHistory"]
da=[]
print(len(dailyDeadRateHistory))
for i in range(len(dailyHealRateHistory)):
    da.append([dailyDeadRateHistory[i]["date"],
               dailyHealRateHistory[i]["hubeiRate"],
               dailyHealRateHistory[i]["notHubeiRate"],
               dailyHealRateHistory[i]["countryRate"],
               dailyDeadRateHistory[i]["hubeiRate"],
               dailyDeadRateHistory[i]["notHubeiRate"],
               dailyDeadRateHistory[i]["countryRate"]])
print(da)

df = pd.DataFrame({})
df["date"] =  [x[0] for x in da]
df["hubeiRate_heal"] = [x[1] for x in da]
df["notHubeiRate_heal"] =  [x[2] for x in da]
df["countryRate_heal"] =  [x[3] for x in da]
df["hubeiRate_dead"] =  [x[4] for x in da]
df["notHubeiRate_dead"] =  [x[5] for x in da]
df["countryRate_dead"] =  [x[6] for x in da]

print(df)
fig = plt.figure(figsize=(10, 5))
count = df.count()['date']
index = np.arange(count)
df['index'] = index
print(df)
#設置橫座標間隔
limit=1
# 設置橫座標的刻度與顯示標籤
plt.xticks(index[::limit], df['date'][::limit],rotation=90)
plt.title("湖北內外確診累計")
ax1 = plt.gca()
ax2 = ax1.twinx()
#設置座標標題
ax1.set(xlabel='date', ylabel='百分點')
# ax2.set(xlabel='date', ylabel='百分點')
#解決畫圖中文亂碼問題
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
line1, = ax1.plot(index, df['countryRate_heal'], 'g', linestyle='-',linewidth=2,alpha=0.9,label='countryRate_heal')
line2, = ax1.plot(index, df['hubeiRate_heal'], 'g', linestyle='--',linewidth=2,alpha=0.9, label='hubeiRate_heal')
line3, = ax1.plot(index, df['notHubeiRate_heal'],  'g', linestyle=':',linewidth=2,alpha=0.9, label='notHubeiRate_heal')
line4, = ax1.plot(index, df['countryRate_dead'], 'k', linestyle='-',linewidth=2,alpha=0.9, label='countryRate_dead')
line5, = ax1.plot(index, df['hubeiRate_dead'], 'k', linestyle='--',linewidth=2,alpha=0.9, label='hubeiRate_dead')
line6, = ax1.plot(index, df['notHubeiRate_dead'], 'k', linestyle=':',linewidth=2,alpha=0.9, label='notHubeiRate_dead')
# line7, = ax1.plot(index, df['countryConfirm'], 'orange', linestyle='-',linewidth=2,alpha=0.9, label='"countryConfirm')
# line8, = ax1.plot(index, df['hubeiConfirm'], 'orange', linestyle='--',linewidth=2,alpha=0.9, label='hubeiConfirm')
# line9, = ax1.plot(index, df['notHubeiRate'], 'orange', linestyle=':',linewidth=2,alpha=0.9, label='notHubeiRate')
#設置圖例
plt.legend(handles=[line1,line2,line3,line4,line5,line6])
plt.show()

湖北內外確診累計(原網頁變更,僅供參考)

在這裏插入圖片描述
在這裏插入圖片描述

import json
import requests
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np

url="https://view.inews.qq.com/g2/getOnsInfo?name=disease_h5"
resp=requests.get(url)
html=resp.json()
data=json.loads(html["data"])

dailyDeadRateHistory=data["dailyDeadRateHistory"]
da=[]
for i in range(len(dailyDeadRateHistory)):
    da.append([dailyDeadRateHistory[i]["date"],dailyDeadRateHistory[i]["hubeiDead"] , dailyDeadRateHistory[i]["hubeiConfirm"], dailyDeadRateHistory[i]["countryDead"],dailyDeadRateHistory[i]["countryConfirm"],dailyDeadRateHistory[i]["hubeiRate"],dailyDeadRateHistory[i]["notHubeiRate"],dailyDeadRateHistory[i]["countryRate"]])
print(da)

df = pd.DataFrame({})
df["date"] =  [x[0] for x in da]
df["hubeiDead"] = [x[1] for x in da]
df["hubeiConfirm"] =  [x[2] for x in da]
df["countryDead"] =  [x[3] for x in da]
df["countryConfirm"] =  [x[4] for x in da]
df["hubeiRate"] =  [x[5] for x in da]
df["notHubeiRate"] =  [x[6] for x in da]
df["countryRate"] =  [x[7] for x in da]
df["NotHubeiDead"] = df["countryDead"] - df["hubeiDead"]
df["NotHubeiConfirm"] = df["countryConfirm"] - df["hubeiConfirm"]

print(df)
fig = plt.figure(figsize=(10, 5))
count = df.count()['date']
index = np.arange(count)
df['index'] = index
print(df)
#設置橫座標間隔
limit=1
# 設置橫座標的刻度與顯示標籤
plt.xticks(index[::limit], df['date'][::limit],rotation=90)
plt.title("湖北內外確診累計")
ax1 = plt.gca()
#設置座標標題
ax1.set(xlabel='date', ylabel='人數')
#解決畫圖中文亂碼問題
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
line1, = ax1.plot(index, df['countryConfirm'], 'black',linestyle='-',linewidth=2,alpha=0.9, label='countryConfirm')
line2, = ax1.plot(index, df['hubeiConfirm'],  'black',linestyle='--',linewidth=2,alpha=0.9,  label='hubeiConfirm')
line3, = ax1.plot(index, df['NotHubeiConfirm'],  'black',linestyle=':',linewidth=2,alpha=0.9,  label='NotHubeiConfirm')
#設置圖例
plt.legend(handles=[line1, line2,line3])
plt.show()

湖北內外死亡和治癒累計(原網頁變更,僅供參考)

在這裏插入圖片描述

import json
import requests
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np

url="https://view.inews.qq.com/g2/getOnsInfo?name=disease_h5"
resp=requests.get(url)
html=resp.json()
data=json.loads(html["data"])

dailyDeadRateHistory=data["dailyDeadRateHistory"]
da=[]
for i in range(len(dailyDeadRateHistory)):
    da.append([dailyDeadRateHistory[i]["date"],dailyDeadRateHistory[i]["hubeiDead"] , dailyDeadRateHistory[i]["hubeiConfirm"], dailyDeadRateHistory[i]["countryDead"],dailyDeadRateHistory[i]["countryConfirm"],dailyDeadRateHistory[i]["hubeiRate"],dailyDeadRateHistory[i]["notHubeiRate"],dailyDeadRateHistory[i]["countryRate"]])
print(da)

df = pd.DataFrame({})
df["date"] =  [x[0] for x in da]
df["hubeiDead"] = [x[1] for x in da]
df["hubeiConfirm"] =  [x[2] for x in da]
df["countryDead"] =  [x[3] for x in da]
df["countryConfirm"] =  [x[4] for x in da]
df["hubeiRate"] =  [x[5] for x in da]
df["notHubeiRate"] =  [x[6] for x in da]
df["countryRate"] =  [x[7] for x in da]
df["NotHubeiDead"] = df["countryDead"] - df["hubeiDead"]
df["NotHubeiConfirm"] = df["countryConfirm"] - df["hubeiConfirm"]

print(df)
fig = plt.figure(figsize=(10, 5))
count = df.count()['date']
index = np.arange(count)
df['index'] = index
print(df)
#設置橫座標間隔
limit=1
# 設置橫座標的刻度與顯示標籤
plt.xticks(index[::limit], df['date'][::limit],rotation=90)
plt.title("湖北內外死亡和治癒累計")
ax1 = plt.gca()
ax2 = ax1.twinx()
#設置座標標題
ax1.set(xlabel='date', ylabel='人數')
ax2.set(xlabel='date', ylabel='百分點')
#解決畫圖中文亂碼問題
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
line1, = ax1.plot(index, df['countryDead'], 'black', linestyle='-',linewidth=2,alpha=0.9,label='countryDead')
line2, = ax1.plot(index, df['hubeiDead'], 'black', linestyle='--',linewidth=2,alpha=0.9, label='hubeiDead')
line3, = ax1.plot(index, df['NotHubeiDead'],  'black', linestyle=':',linewidth=2,alpha=0.9, label='NotHubeiDead')
line4, = ax2.plot(index, df['countryRate'], 'grey', linestyle='-',linewidth=2,alpha=0.9, label='countryRate')
line5, = ax2.plot(index, df['hubeiRate'], 'grey', linestyle='--',linewidth=2,alpha=0.9, label='hubeiRate')
line6, = ax2.plot(index, df['notHubeiRate'], 'grey', linestyle=':',linewidth=2,alpha=0.9, label='notHubeiRate')
# line7, = ax1.plot(index, df['countryConfirm'], 'orange', linestyle='-',linewidth=2,alpha=0.9, label='"countryConfirm')
# line8, = ax1.plot(index, df['hubeiConfirm'], 'orange', linestyle='--',linewidth=2,alpha=0.9, label='hubeiConfirm')
# line9, = ax1.plot(index, df['notHubeiRate'], 'orange', linestyle=':',linewidth=2,alpha=0.9, label='notHubeiRate')
#設置圖例
plt.legend(handles=[line1, line2,line3,line4,line5,line6])
plt.show()

武漢加油!湖北加油!中國加油!

發佈了79 篇原創文章 · 獲贊 88 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章