利用python繪制帶有時間線的柱狀圖
如何繪制柱狀圖
繪制柱狀圖跟繪制折線圖的步驟是大致相同的。
python 中繪制柱狀圖依賴于 pyecharts.charts
模塊下的 Bar
方法。
from pyecharts.charts import Bar bar = Bar() x_data = ["英國","美國","中國"] y_data = [10,20,30] bar.add_xaxis(x_data) bar.add_yaxis("GDP",y_data) bar.render("柱狀圖.html")
我們還可以將橫坐標與縱坐標顛倒一下,來使數(shù)據(jù)的展示更加的形象。
使用 bar.reversal_axis()
反轉(zhuǎn)x軸和y軸。
這里數(shù)據(jù)顯示在柱狀圖中,我們看的不是很方便,我也也可以通過設置系列配置選項來使數(shù)據(jù)顯示在柱狀圖的右側。
bar.add_yaxis("GDP",y_data,label_opts=LabelOpts(position="right"))
所以我們經(jīng)過完善后的整體代碼是:
from pyecharts.charts import Bar from pyecharts.options import LabelOpts bar = Bar() x_data = ["英國","美國","中國"] y_data = [10,20,30] bar.add_xaxis(x_data) bar.add_yaxis("GDP",y_data,label_opts=LabelOpts(position="right")) bar.reversal_axis() # 反轉(zhuǎn)x軸和y軸 bar.render("柱狀圖.html")
添加時間線
通過添加時間線我們可以看到多種不同的數(shù)據(jù),每一個時間其實就是一個柱狀圖,時間線是由一個一個的柱狀圖組成的。
from pyecharts.charts import Bar,Timeline from pyecharts.options import LabelOpts,TitleOpts bar1 = Bar() bar2 = Bar() bar3 = Bar() x_data = ["英國","美國","中國"] y_data1 = [10,20,30] y_data2 = [20,30,40] y_data3 = [40,50,70] bar1.add_xaxis(x_data) bar1.add_yaxis("GDP",y_data1,label_opts=LabelOpts(position="right")) bar1.reversal_axis() # 反轉(zhuǎn)x軸和y軸 bar1.set_global_opts(title_opts=TitleOpts(title="2021年GDP")) bar2.add_xaxis(x_data) bar2.add_yaxis("GDP",y_data2,label_opts=LabelOpts(position="right")) bar2.reversal_axis() # 反轉(zhuǎn)x軸和y軸 bar2.set_global_opts(title_opts=TitleOpts(title="2022年GDP")) bar3.add_xaxis(x_data) bar3.add_yaxis("GDP",y_data3,label_opts=LabelOpts(position="right")) bar3.reversal_axis() # 反轉(zhuǎn)x軸和y軸 bar3.set_global_opts(title_opts=TitleOpts(title="2023年GDP")) timeline = Timeline() timeline.add(bar1,"2021") timeline.add(bar2,"2022") timeline.add(bar3,"2023") timeline.render("2021-2023中美英三國GDP.html")
如果我們要讓動態(tài)柱狀圖動起來的話,我們需要設置配置選項。
timeline.add_schema( play_interval=1000, # 每個柱狀圖播放間隔時間,單位(毫秒) is_timeline_show=True, # 是否顯示時間線,默認顯示 is_auto_play=True, # 是否自動播放 is_loop_play=True # 是否循環(huán)播放 )
根據(jù)提供的數(shù)據(jù)繪制動態(tài)柱狀圖
我們顯示出1960年-2014年全國GDP數(shù)據(jù)前八的國家和數(shù)據(jù)。
這里提供的數(shù)據(jù)比較簡單,我們只需要將第一行無用的數(shù)據(jù)刪除,然后再將這些數(shù)據(jù)轉(zhuǎn)換為我們繪制柱狀圖需要的數(shù)據(jù)就好了。
讀取并刪除無用數(shù)據(jù)
f = open("D:/桌面/1960-2019全球GDP數(shù)據(jù).csv","r",encoding="GB2312") data_lines = f.readlines() f.close() data_lines.pop(0)
GB2312 編碼是中文編碼格式
將數(shù)據(jù)轉(zhuǎn)換為字典
data_dict = {} for line in data_lines: data_list = line.split(",") # 每一行以逗號分割,返回一個列表 year = data_list[0] country = data_list[1] GDP = float(data_list[2][:-1]) # 每一行最后有一個換行符 # 這里需要做出異常判斷,因為當我們第一次插入數(shù)據(jù)的時候并沒有容器來裝這些數(shù)據(jù) try: data_dict[year].append((country, GDP)) except: data_dict[year] = [] data_dict[year].append([country, GDP])
創(chuàng)建柱狀圖并添加到時間線中
sorted_year_line = sorted(data_dict.keys()) # 按時間順序排序 timeline = Timeline({"scheme":ThemeType.LIGHT}) # 在創(chuàng)建時間線的時候傳入scheme參數(shù)可以設置時間線的主題,也就是柱狀圖的顏色 for year in sorted_year_line: x_data = [] y_data = [] data_dict[year].sort(key=lambda element : element[1],reverse=True) year_data = data_dict[year][0:8] # 取GDP前八的數(shù)據(jù) for data in year_data: x_data.append(data[0]) y_data.append(data[1] / 100000000) bar = Bar() x_data.reverse() y_data.reverse() # 讓GDP排名第一的數(shù)據(jù)在最上面,所以我們將x_data 和 y_data中的數(shù)據(jù)反轉(zhuǎn)一下 bar.add_xaxis(x_data) bar.add_yaxis("GDP(億)",y_data,label_opts=LabelOpts(position="right")) bar.reversal_axis() # 將x軸和y軸翻轉(zhuǎn) bar.set_global_opts( title_opts=TitleOpts(title=f"{year}年全國GDP數(shù)據(jù)前八") ) timeline.add(bar,year)
配置選項并生成帶有數(shù)據(jù)的折線圖
timeline.add_schema( play_interval=1000, is_timeline_show=True, is_auto_play=True, is_loop_play=False ) timeline.render("1960-2014年全國GDP數(shù)據(jù)前八.html")
到此這篇關于利用python繪制帶有時間線的柱狀圖的文章就介紹到這了,更多相關python時間線柱狀圖內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
教你利用python如何讀取txt中的數(shù)據(jù)
們使用python的時候經(jīng)常需要讀取txt文件中的內(nèi)容,下面這篇文章主要給大家介紹了關于利用python如何讀取txt中數(shù)據(jù)的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下2022-03-03pytest fixtures裝飾器的使用和如何控制用例的執(zhí)行順序
這篇文章主要介紹了pytest fixtures裝飾器的使用和如何控制用例的執(zhí)行順序,幫助大家更好的理解和使用pytest測試框架,感興趣的朋友可以了解下2021-01-01詳解python的webrtc庫實現(xiàn)語音端點檢測
這篇文章主要介紹了詳解python的webrtc庫實現(xiàn)語音端點檢測,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-05-05科學Python開發(fā)環(huán)境Spyder必知必會點
這篇文章主要為大家介紹了科學Python開發(fā)環(huán)境Spyder必知必會點及使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2024-01-01