利用python繪制數(shù)據(jù)曲線(xiàn)圖的實(shí)現(xiàn)
”在舉國(guó)上下萬(wàn)眾一心、眾志成城做好新冠肺炎疫情防控工作的特殊時(shí)刻,我們不能親臨主戰(zhàn)場(chǎng),但我們能堅(jiān)持在大戰(zhàn)中堅(jiān)定信心、不負(fù)韶華?!?/p>
1、爬取新聞保存為json文件,并將繪圖所需數(shù)據(jù)保存至數(shù)據(jù)庫(kù)
數(shù)據(jù)庫(kù)表結(jié)構(gòu):

代碼部分:
import pymysql
import re
import sys,urllib,json
from urllib import request
from datetime import datetime
import pandas as pd
Today=datetime.now().strftime(r"%Y-%m-%d")
#Today='2020-02-14'
def pachong():
url='http://api.tianapi.com/txapi/ncov/index?key=xxx&date={}'.format(Today)
req = request.Request(url)
resp = request.urlopen(req)
content = resp.read().decode()
data=json.loads(content)
with open('/Users/zhangyuchen/Desktop/latestTrends.json','w') as fp:#將所得的數(shù)據(jù)存儲(chǔ)為json文件
json.dump(data,fp = fp,ensure_ascii = False,indent = 4,sort_keys=True)
#dump函數(shù)有很多參數(shù),第一個(gè)是目標(biāo)object,第二個(gè)是要寫(xiě)入的文件對(duì)象
print("成功保存為json文件!")
return(re.findall(r'"confirmedCount":(.+?),"',content),re.findall(r'"currentConfirmedCount":(.+?),"',content),re.findall(r'"curedCount":(.+?),"',content))
def connectMysql(cc):
#/usr/local/mysql/bin/mysql -u root -p
db = pymysql.connect("localhost", "root", "密碼", "dbname",charset='utf8' )
cursor = db.cursor()
sql="""insert into {0} (DATE,SICK,SICK_NOW,RECOVER)values('{1}','{2}','{3}','{4}')"""
cursor.execute(sql.format('db1',Today,int(cc[0][0]),int(cc[1][0]),int(cc[2][0])))
cursor.execute(sql.format('db2',Today,int(cc[0][1]),int(cc[1][1]),int(cc[2][1])))
db.commit()
print(("成功將{}數(shù)據(jù)存入數(shù)據(jù)庫(kù)!").format(Today))
db.close()
cc=pachong()
connectMysql(cc)
json文件:

2、利用matplotlib庫(kù)函數(shù)繪制圖表
import numpy as np
import matplotlib.pyplot as plt
import matplotlib
import pymysql
import re
import sys, urllib,json
from urllib import request
#/usr/local/mysql/bin/mysql -u root -p
date=[]
cSick=[]
aSick=[]
cNowSick=[]
aNowSick=[]
cRecover=[]
aRecover=[]
db = pymysql.connect("localhost", "root", "密碼", "trends")
sql="select * from db1 ORDER BY DATE"
cursor = db.cursor()
cursor.execute(sql)
results = cursor.fetchall()
while results:
for row in results:
date.append(row[0].strftime("%d"))
cSick.append(row[1])
cNowSick.append(row[2])
cRecover.append(row[3])
results=cursor.fetchone()
#查詢(xún)Abroad Table
sql="select * from db2"
cursor.execute(sql)
results = cursor.fetchall()
while results:
for row in results:
aSick.append(row[1])
aNowSick.append(row[2])
aRecover.append(row[3])
results=cursor.fetchone()
cursor.close()
db.close()
def DrawLineChart(ySick,yNowSick):
plt.plot(x,ySick,color='y',label="Cumulative number of cases",linewidth=3,linestyle="--")
plt.plot(x,yNowSick,color='r',label="Current number of cases",linewidth=3,linestyle="-")
def DrawBarChart(yRecover):
width=0.45#柱子寬度
p2 = plt.bar(x,yRecover,width,label="Cured Count",color="#87CEFA")
Days=len(aSick)
plt.figure(figsize=(16,12), dpi=80)#設(shè)置分辨率為80像素/每英寸
x=np.arange(Days)
#創(chuàng)建兩個(gè)子圖
plt.subplot(322)
plt.title("Trends of March")
DrawLineChart(cSick,cNowSick)
DrawBarChart(cRecover)
plt.figlegend()
plt.xticks(x,date)
plt.ylabel('Number')
plt.subplot(324)
#plt.title("Trends of March")
DrawLineChart(aSick,aNowSick)
DrawBarChart(aRecover)
plt.xticks(x,date,rotation=0)
plt.xlabel('Date')
plt.ylabel('Number')
plt.show()
到此這篇關(guān)于利用python繪制數(shù)據(jù)曲線(xiàn)圖的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)python 數(shù)據(jù)曲線(xiàn)圖內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Python繪制3d螺旋曲線(xiàn)圖實(shí)例代碼
- python matlibplot繪制多條曲線(xiàn)圖
- 用python建立兩個(gè)Y軸的XY曲線(xiàn)圖方法
- python畫(huà)蝴蝶曲線(xiàn)圖的實(shí)例
- Python matplotlib 繪制雙Y軸曲線(xiàn)圖的示例代碼
- python讀取excel數(shù)據(jù)繪制簡(jiǎn)單曲線(xiàn)圖的完整步驟記錄
- python入門(mén)turtle庫(kù)實(shí)現(xiàn)螺旋曲線(xiàn)圖的方法示例
- 利用Python?Matlab繪制曲線(xiàn)圖的簡(jiǎn)單實(shí)例
- 詳解Python+Matplotlib繪制面積圖&熱力圖
- python面積圖之曲線(xiàn)圖的填充
相關(guān)文章
使用python編寫(xiě)監(jiān)聽(tīng)端
這篇文章主要為大家詳細(xì)介紹了使用python編寫(xiě)監(jiān)聽(tīng)端,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-04-04
關(guān)于Python中request發(fā)送post請(qǐng)求傳遞json參數(shù)的問(wèn)題
這篇文章主要介紹了Python中request發(fā)送post請(qǐng)求傳遞json參數(shù)的問(wèn)題,在Python中需要傳遞dict參數(shù),利用json.dumps將dict轉(zhuǎn)為json格式用post方法發(fā)起請(qǐng)求,感興趣的朋友跟隨小編一起看看吧2022-08-08
基于python3 pyQt5 QtDesignner實(shí)現(xiàn)窗口化猜數(shù)字游戲功能
這篇文章主要介紹了基于python3 pyQt5 QtDesignner實(shí)現(xiàn)窗口化猜數(shù)字游戲功能,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-07-07
用Python的pandas框架操作Excel文件中的數(shù)據(jù)教程
這篇文章主要介紹了用Python的pandas框架操作Excel文件中的數(shù)據(jù)教程,包括單位格式轉(zhuǎn)換、分類(lèi)匯總等基本操作,需要的朋友可以參考下2015-03-03
python 遺傳算法求函數(shù)極值的實(shí)現(xiàn)代碼
今天小編就為大家分享一篇python 遺傳算法求函數(shù)極值的實(shí)現(xiàn)代碼,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-02-02
Python實(shí)現(xiàn)Windows和Linux之間互相傳輸文件(文件夾)的方法
下面小編就為大家?guī)?lái)一篇Python實(shí)現(xiàn)Windows和Linux之間互相傳輸文件(文件夾)的方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-05-05
Selenium+Python自動(dòng)化腳本環(huán)境搭建的全過(guò)程
說(shuō)到自動(dòng)化測(cè)試,就不得不提大名鼎鼎的Selenium,Selenium 是如今最常用的自動(dòng)化測(cè)試工具之一,支持快速開(kāi)發(fā)自動(dòng)化測(cè)試框架,且支持在多種瀏覽器上執(zhí)行測(cè)試,下面這篇文章主要給大家介紹了關(guān)于Selenium+Python自動(dòng)化腳本環(huán)境搭建的相關(guān)資料,需要的朋友可以參考下2021-09-09

