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è)下問(wèn)題:很多數(shù)字重疊了
我們可以利用全局選項(xiàng)中的圖例來(lái)解決,讓其不顯示
按下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連接HDFS實(shí)現(xiàn)文件上傳下載及Pandas轉(zhuǎn)換文本文件到CSV操作
這篇文章主要介紹了Python連接HDFS實(shí)現(xiàn)文件上傳下載及Pandas轉(zhuǎn)換文本文件到CSV操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-06-06Python使用FastApi發(fā)送Post請(qǐng)求的基本步驟
FastAPI 是一個(gè)現(xiàn)代、快速(高性能)的 Web 框架,用于構(gòu)建 API,它基于 Python 3.6 及以上版本,在 FastAPI 中發(fā)送 POST 請(qǐng)求,通常是指創(chuàng)建一個(gè)接口來(lái)接收客戶端發(fā)送的 POST 請(qǐng)求,以下是使用 FastAPI 處理 POST 請(qǐng)求的基本步驟,需要的朋友可以參考下2024-09-09Python的另外幾種語(yǔ)言實(shí)現(xiàn)
這篇文章主要介紹了Python的另外幾種語(yǔ)言實(shí)現(xiàn),本文介紹了CPython、Jython、Python for .NET、PyPy、Stackless等其它幾種語(yǔ)言實(shí)現(xiàn)的Python,需要的朋友可以參考下2015-01-01使用Pandas實(shí)現(xiàn)MySQL窗口函數(shù)的解決方法
本文主要介紹 MySQL 中的窗口函數(shù)row_number()、lead()/lag()、rank()/dense_rank()、first_value()、count()、sum()如何使用pandas實(shí)現(xiàn),同時(shí)二者又有什么區(qū)別,感興趣的朋友一起看看吧2023-02-02python射線法判斷檢測(cè)點(diǎn)是否位于區(qū)域外接矩形內(nèi)
這篇文章主要為大家詳細(xì)介紹了python射線法判斷檢測(cè)點(diǎn)是否位于區(qū)域外接矩形內(nèi),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-06-06Python接口自動(dòng)化之cookie、session應(yīng)用詳解
本文主要介紹cookie、session原理及在自動(dòng)化過(guò)程中如何利用cookie、session保持會(huì)話狀態(tài)的應(yīng)用,有需要的朋友可以參考下,希望可以有所幫助2021-08-08