python利用json和pyecharts畫折線圖實(shí)例代碼

注:本次實(shí)驗(yàn)的數(shù)據(jù)在文章最后面,我已上傳至百度網(wǎng)盤
一.json模塊對(duì)數(shù)據(jù)進(jìn)行處理

上面三個(gè)txt文本是這三個(gè)國(guó)家疫情爆發(fā)相關(guān)的數(shù)據(jù)

我們先以美國(guó)為例
我們可以看到,這文件里面有些地方不符合json格式,所以在用改文件之前就需要我們?nèi)ヌ幚?/p>


處理json格式的數(shù)據(jù)我們需要借用json在線解析工具
我這里用的是:



將正確格式復(fù)制粘貼到“json數(shù)據(jù)”中,然后再點(diǎn)擊“視圖”

這里就會(huì)給我們一個(gè)流程圖
這里我們就要開始分析:
我們需要的是,美國(guó)疫情確診人隨時(shí)間的變化,我們依次打開就可以找到

這兩個(gè)部分就是我們需要的 ,我們可以知道這里json是一個(gè)字典類型,那么我們就是先要從json中找到data這個(gè)key,data是一個(gè)列表嵌套一個(gè)字典,所以我們用data[0]就可以取得列表里面的內(nèi)容,從列表里面找到trend這個(gè)key,然后同理,再?gòu)膖rend這個(gè)字典中找出updateData和data
代碼如下
import json
from pyecharts.charts import Line
from pyecharts.options import TitleOpts
#處理數(shù)據(jù)
f_us=open("D:/美國(guó).txt","r",encoding="utf-8")
us_data=f_us.read()
#去掉不合json規(guī)范的開頭
us_data=us_data.replace("jsonp_1629344292311_69436(","")
#去掉不合JSON規(guī)范的結(jié)尾
us_data=us_data[:-2]
#json轉(zhuǎn)python字典
us_dict = json.loads(us_data)
#獲取trend key
trend_data=us_dict["data"][0]["trend"]
print(trend_data)
#獲取日期數(shù)據(jù),用于x軸,取到2020年(到下標(biāo)314結(jié)束)
us_x_data=trend_data["updateDate"][:314]
print(us_x_data)
#獲取確診數(shù)據(jù),用于y軸,取到2020年(到下標(biāo)314結(jié)束)
us_y_data=trend_data["list"][0]["data"][:314]
print(us_y_data)結(jié)果是

二.利用pyecharts畫折線圖
import json
from pyecharts.charts import Line
from pyecharts.options import TitleOpts
#處理數(shù)據(jù)
f_us=open("D:/美國(guó).txt","r",encoding="utf-8")
us_data=f_us.read()
#去掉不合json規(guī)范的開頭
us_data=us_data.replace("jsonp_1629344292311_69436(","")
#去掉不合JSON規(guī)范的結(jié)尾
us_data=us_data[:-2]
#json轉(zhuǎn)python字典
us_dict = json.loads(us_data)
#獲取trend key
trend_data=us_dict["data"][0]["trend"]
print(trend_data)
#獲取日期數(shù)據(jù),用于x軸,取到2020年(到下標(biāo)314結(jié)束)
us_x_data=trend_data["updateDate"][:314]
print(us_x_data)
#獲取確診數(shù)據(jù),用于y軸,取到2020年(到下標(biāo)314結(jié)束)
us_y_data=trend_data["list"][0]["data"][:314]
print(us_y_data)
#生成圖表
line=Line()#構(gòu)建折線圖對(duì)象
#添加x軸對(duì)象
line.add_xaxis(us_x_data)
#添加y周數(shù)據(jù)
line.add_yaxis("美國(guó)確診人數(shù)",us_y_data)
#設(shè)置全局變量
line.set_global_opts(
title_opts=TitleOpts(title="2020年美國(guó)確診人數(shù)折線圖",pos_left="center",pos_bottom="1%")
)
#調(diào)用render方法,生成圖表
line.render()
#關(guān)閉文件
f_us.close()
結(jié)果是


三.利用pyecharts畫美、日、印三國(guó)家折線圖
日本和印度的數(shù)據(jù)處理部分,跟美國(guó)的處理方法是一樣的,代碼如下:
import json
from pyecharts.charts import Line
from pyecharts.options import TitleOpts
#處理數(shù)據(jù)
f_us=open("D:/美國(guó).txt","r",encoding="utf-8")
f_jp=open("D:/日本.txt","r",encoding="utf-8")
f_in=open("D:/印度.txt","r",encoding="utf-8")
us_data=f_us.read()
jp_data=f_jp.read()
in_data=f_in.read()
#去掉不合json規(guī)范的開頭
us_data=us_data.replace("jsonp_1629344292311_69436(","")
jp_data=jp_data.replace("jsonp_1629350871167_29498(","")
in_data=in_data.replace("jsonp_1629350745930_63180(","")
#去掉不合JSON規(guī)范的結(jié)尾
us_data=us_data[:-2]
jp_data=jp_data[:-2]
in_data=in_data[:-2]
#json轉(zhuǎn)python字典
us_dict = json.loads(us_data)
jp_dict = json.loads(jp_data)
in_dict = json.loads(in_data)
#獲取trend key
us_trend_data=us_dict["data"][0]["trend"]
jp_trend_data=jp_dict["data"][0]["trend"]
in_trend_data=in_dict["data"][0]["trend"]
#獲取日期數(shù)據(jù),用于x軸,取到2020年(到下標(biāo)314結(jié)束)
us_x_data=us_trend_data["updateDate"][:314]
jp_x_data=jp_trend_data["updateDate"][:314]
in_x_data=in_trend_data["updateDate"][:314]
#獲取確診數(shù)據(jù),用于y軸,取到2020年(到下標(biāo)314結(jié)束)
us_y_data=us_trend_data["list"][0]["data"][:314]
jp_y_data=jp_trend_data["list"][0]["data"][:314]
in_y_data=in_trend_data["list"][0]["data"][:314]
#生成圖表
line=Line()#構(gòu)建折線圖對(duì)象
#添加x軸對(duì)象
line.add_xaxis(us_x_data)#因?yàn)閤軸都是一樣的,所以就用一個(gè)就可
#添加y周數(shù)據(jù)
line.add_yaxis("美國(guó)確診人數(shù)",us_y_data)
line.add_yaxis("日本確診人數(shù)",jp_y_data)
line.add_yaxis("印度確診人數(shù)",in_y_data)
#設(shè)置全局變量
line.set_global_opts(
title_opts=TitleOpts(title="2020年美國(guó)、日本、印度確診人數(shù)折線圖",pos_left="center",pos_bottom="1%")
)
#調(diào)用render方法,生成圖表
line.render()
#關(guān)閉文件
f_us.close()
f_jp.close()
f_in.close()
結(jié)果是

還有一個(gè)下問題:很多數(shù)字重疊了
我們可以利用全局選項(xiàng)中的圖例來解決,讓其不顯示

按下Ctrl+p就會(huì)顯示有哪些位置參數(shù),label_opts就是控制圖例的
#添加y周數(shù)據(jù)
line.add_yaxis("美國(guó)確診人數(shù)",us_y_data,label_opts=False)
line.add_yaxis("日本確診人數(shù)",jp_y_data,label_opts=False)
line.add_yaxis("印度確診人數(shù)",in_y_data,label_opts=False)結(jié)果是

四.本文數(shù)據(jù)集
鏈接: https://pan.baidu.com/s/1L1Z-lkErmUZqgJxlGW_xAQ?pwd=7par
提取碼: 7par
到此這篇關(guān)于python利用json和pyecharts畫折線圖實(shí)例的文章就介紹到這了,更多相關(guān)python利用json和pyecharts畫折線圖內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python實(shí)現(xiàn)深度遍歷和廣度遍歷的方法
今天小編就為大家分享一篇Python實(shí)現(xiàn)深度遍歷和廣度遍歷的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-01-01
python 使用Yolact訓(xùn)練自己的數(shù)據(jù)集
這篇文章主要介紹了python 使用Yolact訓(xùn)練自己的數(shù)據(jù)集,幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下2021-04-04
Python 序列化和反序列化庫(kù) MarshMallow 的用法實(shí)例代碼
marshmallow(Object serialization and deserialization, lightweight and fluffy.)用于對(duì)對(duì)象進(jìn)行序列化和反序列化,并同步進(jìn)行數(shù)據(jù)驗(yàn)證。這篇文章主要介紹了Python 序列化和反序列化庫(kù) MarshMallow 的用法實(shí)例代碼,需要的朋友可以參考下2020-02-02
用Python+OpenCV對(duì)比圖像質(zhì)量的幾種方法
這篇文章主要介紹了用Python+OpenCV對(duì)比圖像質(zhì)量過程詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-07-07
Python使用selenium + headless chrome獲取網(wǎng)頁(yè)內(nèi)容的方法示例
這篇文章主要介紹了Python使用selenium + headless chrome獲取網(wǎng)頁(yè)內(nèi)容的方法示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10
Python中itertools庫(kù)的四個(gè)函數(shù)介紹
這篇文章主要介紹了Python中itertools庫(kù)的四個(gè)函數(shù),主要討論itertools庫(kù)中的十分使用的幾個(gè)函數(shù),并重點(diǎn)介紹什么時(shí)候我們應(yīng)該考慮使用它們,需要的朋友可以參考一下2022-04-04
django filter過濾器實(shí)現(xiàn)顯示某個(gè)類型指定字段不同值方式
這篇文章主要介紹了django filter過濾器實(shí)現(xiàn)顯示某個(gè)類型指定字段不同值方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-07-07

