日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

【Python】pyecharts 数据可视化模块

發布時間:2024/1/8 python 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Python】pyecharts 数据可视化模块 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 1. pyecharts 模塊介紹
  • 2. pyecharts 模塊安裝
  • 3. pyecharts 配置選項
    • 3.1 全局配置選項
    • 3.2 系列配置選項
  • 4. 基礎折線圖的構建
    • 4.1 基本使用流程
    • 4.2 實現2020年美印日確診人數對比折線圖
  • 5. 基礎地圖構建
    • 5.1 基本使用流程
    • 5.2 實現國內疫情地圖
    • 5.3 實現省級疫情地圖
  • 6. 基礎柱狀圖構建
    • 6.1 基本使用流程
    • 6.2 基礎時間線柱狀圖
    • 6.3 實現動態 GDP 柱狀圖

1. pyecharts 模塊介紹

Echarts 是一個由百度開源的數據可視化,憑借著良好的交互性,精巧的圖表設計,得到了眾多開發者的認可。而 Python 是一門富有表達力的語言,很適合用于數據處理。當數據分析遇上數據可視化時,pyecharts 誕生了。

pyecharts 官網:https://pyecharts.org/#/zh-cn/

pyecharts 畫廊地址:https://gallery.pyecharts.org/#/README

2. pyecharts 模塊安裝

pip install pyecharts

3. pyecharts 配置選項

pyecharts 模塊中有很多配置選項,常用到兩個類別的選項:全局配置選項和系列配置選項。

3.1 全局配置選項

全局配置選項可以通過 set_global_opts 方法來進行配置,通常對圖表的一些通用的基礎的元素進行配置,例如標題、圖例、工具箱、鼠標移動效果等等,它們與圖表的類型無關。

示例代碼:通過折線圖對象對折線圖進行全局配置

from pyecharts.charts import Line from pyecharts.options import TitleOpts, LegendOpts, ToolboxOpts, VisualMapOpts# 獲取折線圖對象 line = Line()# 對折線圖進行全局配置 line.set_global_opts(# 設置標題、標題的位置...title_opts=TitleOpts("國家GDP展示", pos_left="center", pos_bottom="1%"),# 設置圖例是展示的...legend_opts=LegendOpts(is_show=True),# 設置工具箱是展示的toolbox_opts=ToolboxOpts(is_show=True),# 設置視覺映射是展示的visualmap_opts=VisualMapOpts(is_show=True) )

3.2 系列配置選項

系列配置選項是針對某個具體的參數進行配置,可以去 pyecharts 官網進行了解。

4. 基礎折線圖的構建

4.1 基本使用流程

  • 導包,導入 Line 功能構建折線圖對象

    from pyecharts.charts import Line from pyecharts.options import TitleOpts, LegendOpts, ToolboxOpts, VisualMapOpts
  • 獲取折線圖對象

    line = Line()
  • 添加 x、y 軸數據(添加系列配置)

    line.add_xaxis(["中國", "美國", "英國"]) line.add_yaxis("GDP", [30, 20, 10])
  • 添加全局配置

    line.set_global_opts(# 設置標題、標題的位置...title_opts=TitleOpts("國家GDP展示", pos_left="center", pos_bottom="1%"),# 設置圖例是展示的...legend_opts=LegendOpts(is_show=True),# 設置工具箱是展示的toolbox_opts=ToolboxOpts(is_show=True),# 設置視覺映射是展示的visualmap_opts=VisualMapOpts(is_show=True) )
  • 生成圖表(通過 render 方法將代碼生成圖像)

    line.render()

  • 4.2 實現2020年美印日確診人數對比折線圖

    import json from pyecharts.charts import Line# 獲取不同國家疫情時間 from pyecharts.options import TitleOpts, LabelOptsdef getdata(file):# 處理數據try:f = open(file, 'r', encoding='utf8')except FileNotFoundError as e:print(f"文件不存在,具體錯誤為:{e}")else:data = f.read()# JSON 轉 Python 字典dict = json.loads(data)# 獲取 trendtrend_data = dict['data'][0]['trend']# 獲取日期數據,用于 x 軸(只拿2020年的數據)x_data = trend_data['updateDate'][:314]# 獲取確認數據,用于 y 軸y_data = trend_data['list'][0]['data'][:314]# 返回結果return x_data, y_datafinally:f.close()# 獲取美國數據 us_x_data, us_y_data = getdata("E:\\折線圖數據\\美國.txt")# 獲取印度數據 in_x_data, in_y_data = getdata("E:\\折線圖數據\\印度.txt")# 獲取日本數據 jp_x_data, jp_y_data = getdata("E:\\折線圖數據\\日本.txt")# 生成圖表 line = Line()# 添加 x 軸數據(日期,公用數據,不同國家都一樣) line.add_xaxis(us_x_data)# 添加 y 軸數據(設置 y 軸的系列配置,將標簽不顯示) line.add_yaxis("美國確診人數", us_y_data, label_opts=LabelOpts(is_show=False)) # 添加美國數據 line.add_yaxis("印度確診人數", in_y_data, label_opts=LabelOpts(is_show=False)) # 添加印度數據 line.add_yaxis("日本確診人數", jp_y_data, label_opts=LabelOpts(is_show=False)) # 添加日本數據# 配置全局選項 line.set_global_opts(# 設置標題title_opts=TitleOpts("2020年美日印三國確診人數對比折線圖", pos_left="center", pos_bottom="1%"),)# 生成圖表 line.render()

    5. 基礎地圖構建

    5.1 基本使用流程

  • 導包,導入 Map 功能獲取地圖對象

    from pyecharts.charts import Map from pyecharts.options import VisualMapOpts
  • 獲取地圖對象

    map = Map()
  • 準備好數據

    data = [("北京", 99),("上海", 199),("廣州", 299),("湖南", 199),("安徽", 99),("湖北", 399), ]
  • 添加數據到地圖對象中

    # 地圖名稱、傳入的數據、地圖類型(默認是中國地圖) map,add("地圖", data, "china")
  • 添加全局配置

    map.set_global_opts(# 設置視覺映射配置visualmap_opts=VisualMapOpts(# 打開視覺映射(可能不精準,因此可以開啟手動校準)is_show=True,# 開啟手動校準范圍is_piecewise=True,# 設置要校準參數的具體范圍pieces=[{"min": 1, "max": 9, "label": "1~9人", "color": "#CCFFFF"},{"min": 10, "max": 99, "label": "10~99人", "color": "#FFFF99"},{"min": 100, "max": 199, "label": "100~199人", "color": "#FF9966"},{"min": 200, "max": 299, "label": "200~299人", "color": "#FF6666"},{"min": 300, "label": "300人以上", "color": "#CC3333"},]) )
  • 生成地圖

    map.render()

  • 5.2 實現國內疫情地圖

    import json from pyecharts.charts import Map from pyecharts.options import VisualMapOpts, TitleOpts, LegendOpts# 讀取數據 f = open("E:\\地圖數據\\疫情.txt", 'r', encoding='utf8') str_json = f.read()# 關閉文件 f.close()# JSON 轉 python 字典 data_dict = json.loads(str_json)# 取到各省數據 province_data_list = data_dict['areaTree'][0]['children']# 組裝每個省份和確診人數為元組,并封裝到列表內 data_list = [] for province_data in province_data_list:province_name = province_data['name']province_total_confirm = province_data['total']['confirm']data_list.append((province_name, province_total_confirm))# 創建地圖對象 map = Map()# 添加數據 map.add("各省確診總人數", data_list, "china")# 設置全局配置,定制分段的視覺映射 map.set_global_opts(title_opts=TitleOpts('全國疫情地圖', pos_left='center', pos_bottom='1%'),legend_opts=LegendOpts(is_show=True),visualmap_opts=VisualMapOpts(is_show=True,is_piecewise=True,pieces=[{"min": 1, "max": 9, "label": "1~9人", "color": "#CCFFFF"},{"min": 10, "max": 99, "label": "10~99人", "color": "#FFFF99"},{"min": 100, "max": 499, "label": "100~499人", "color": "#FF9966"},{"min": 500, "max": 999, "label": "500~999人", "color": "#FF6666"},{"min": 1000, "max": 9999, "label": "1000~9999人", "color": "#CC3333"},{"min": 10000, "label": "10000人以上", "color": "#990033"}]) )# 繪圖 map.render()

    5.3 實現省級疫情地圖

    import json from pyecharts.charts import Map from pyecharts.options import VisualMapOpts, TitleOpts, LegendOpts# 讀取數據 f = open("E:\\地圖數據\\疫情.txt", 'r', encoding='utf8') str_json = f.read()# 關閉文件 f.close()# JSON 轉 python 字典 data_dict = json.loads(str_json)# 取到河南省數據 city_data_list = data_dict['areaTree'][0]['children'][3]['children']# 組裝每個市和確診人數為元組,并封裝到列表內 data_list = [] for city_data in city_data_list:city_name = city_data['name'] + "市"city_total_confirm = city_data['total']['confirm']data_list.append((city_name, city_total_confirm))# 創建地圖對象 map = Map()# 添加數據 map.add("各市確診總人數", data_list, "河南")# 設置全局配置,定制分段的視覺映射 map.set_global_opts(title_opts=TitleOpts('河南省疫情地圖', pos_left='center', pos_bottom='1%'),legend_opts=LegendOpts(is_show=True),visualmap_opts=VisualMapOpts(is_show=True,is_piecewise=True,pieces=[{"min": 1, "max": 9, "label": "1~9人", "color": "#CCFFFF"},{"min": 10, "max": 99, "label": "10~99人", "color": "#FFFF99"},{"min": 100, "max": 499, "label": "100~499人", "color": "#FF9966"},{"min": 500, "max": 999, "label": "500~999人", "color": "#FF6666"},{"min": 1000, "max": 9999, "label": "1000~9999人", "color": "#CC3333"},{"min": 10000, "label": "10000人以上", "color": "#990033"}]) )# 繪圖 map.render()

    6. 基礎柱狀圖構建

    6.1 基本使用流程

  • 導包,導入 Bar 功能獲取地圖對象

    from pyecharts.charts import Bar from pyecharts.options import *
  • 獲取地圖對象

    bar = Bar()
  • 添加 x 和 y 軸數據

    # 添加 x 軸數據 bar.add_xaxis(["中國", "英國", "美國"]) # 添加 y 軸數據 bar.add_yaxis("GDP", [30, 20, 10])
  • 添加全局配置

    bar.set_global_opts(title_opts=TitleOpts("基礎柱狀圖", pos_left='center', pos_bottom='1%') )
  • 生成地圖

    bar.render()

  • 反轉 xy 軸

    bar.reversal_axis()

  • 將數值標簽添設置到右側

    bar.add_yaxis("GDP", [30, 20, 10], label_opts=LabelOpts(position='right'))

  • 6.2 基礎時間線柱狀圖

    柱狀圖描述的是分類數據,但很難動態的描述一個趨勢性的數據,為此 pyecharts 中提供了一種解決方案時間線。

    如果說一個 Bar、Line 對象是一張圖表的話,時間線就是創建一個一維的 x 軸,軸上的每一個點就是一個圖表對象。

    創建時間線的基礎流程:

  • 導包,導入時間線 Timeline

    from pyecharts.charts import Bar, Timeline from pyecharts.options import *
  • 準備好圖表對象并添加好數據

    bar1 = Bar() bar1.add_xaxis(["中國", "英國", "美國"]) bar1.add_yaxis("GDP", [30, 20, 10], label_opts=LabelOpts(position='right')) bar1.reversal_axis()bar2 = Bar() bar2.add_xaxis(["中國", "英國", "美國"]) bar2.add_yaxis("GDP", [50, 20, 30], label_opts=LabelOpts(position='right')) bar2.reversal_axis()bar3 = Bar() bar3.add_xaxis(["中國", "英國", "美國"]) bar3.add_yaxis("GDP", [60, 30, 40], label_opts=LabelOpts(position='right')) bar3.reversal_axis()
  • 創建時間線對象 Timeline

    timeline = Timeline()
  • 將圖表添加到 Timeline 對象中

    # 添加圖表到時間線中(圖表對象,點名稱) timeline.add(bar1, "2020年GDP") timeline.add(bar2, "2021年GDP") timeline.add(bar3, "2022年GDP")
  • 通過時間線繪圖

    timeline.render()

  • 設置自動播放

    timeline.add_schema(play_interval=1000, # 自動播放的時間間隔,單位毫秒is_timeline_show=True, # 是否顯示自動播放的時候,顯示時間線(默認 True)is_auto_play=True, # 是否在自動播放(默認 False)is_loop_play=True # 是否循環自動播放(默認 True) )
  • 設置時間線主題

    # 導入 ThemeType from pyecharts.globals import ThemeType# 創建時間線對象時,設置主題參數 timeline = Timeline({"theme": ThemeType.DARK})

    主題參數如下:

  • 6.3 實現動態 GDP 柱狀圖

    import json from pyecharts.charts import Bar, Timeline from pyecharts.options import * from pyecharts.globals import ThemeType# 讀取數據 f = open("E:\\動態柱狀圖數據\\1960-2019全球GDP數據.csv", 'r', encoding='GB2312') data_lines = f.readlines()# 關閉文件 f.close()# 刪除第一條數據 data_lines.pop(0)# 將數據轉化為字典才能出,格式為 {年份1: [[國家1, GDP], [國家2, GDP]], 年份2: [國家, GDP], ...} data_dict = dict()for line in data_lines:year = int(line.split(',')[0]) # 年份country = line.split(',')[1] # 國家gdp = float(line.split(',')[2]) # gdp 數據,通過 float 強制轉換可以把帶有科學計數法的數字轉換為普通數字try: # 如果 key 不存在,則會拋出異常 KeyErrordata_dict[year].append([country, gdp])except KeyError:data_dict[year] = [[country, gdp]]# 排序年份(字典對象的 key 可能是無序的) sorted_year_list = sorted(data_dict.keys())# 創建時間線對象 timeline = Timeline({"theme": ThemeType.LIGHT})# 組裝數據到 Bar 對象中,并添加到 timeline 中 for year in sorted_year_list:data_dict[year].sort(key=lambda element: element[1], reverse=True)# 該年份GDP前八的國家year_data = data_dict[year][:8]x_data = []y_data = []for country_gdp in year_data:x_data.append(country_gdp[0])y_data.append(country_gdp[1] / 100000000)# 創建柱狀圖bar = Bar()x_data.reverse()y_data.reverse()# 添加 x y 軸數據bar.add_xaxis(x_data)bar.add_yaxis("GDP(億)", y_data, label_opts=LabelOpts(position='right'))# 反轉 x y 軸bar.reversal_axis()# 設置每一年的圖表的標題bar.set_global_opts(title_opts=TitleOpts(f"{year}年GDP全球前8國家", pos_left='5%'))# 將 bar 對象添加到 timeline 中timeline.add(bar, year)# 設置自動播放參數 timeline.add_schema(play_interval=1000, # 自動播放的時間間隔,單位毫秒is_timeline_show=True, # 是否顯示自動播放的時候,顯示時間線(默認 True)is_auto_play=True, # 是否在自動播放(默認 False)is_loop_play=True # 是否循環自動播放(默認 True) )# 通過時間線繪圖 timeline.render("1960~2019全球GDP前8國家.html")

    總結

    以上是生活随笔為你收集整理的【Python】pyecharts 数据可视化模块的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。