溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

使用Pyecharts怎么實現(xiàn)數(shù)據(jù)可視化

發(fā)布時間:2021-02-07 19:54:30 來源:億速云 閱讀:511 作者:Leah 欄目:開發(fā)技術(shù)

今天就跟大家聊聊有關(guān)使用Pyecharts怎么實現(xiàn)數(shù)據(jù)可視化,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

一、Pyecharts簡介和安裝

1. 簡介

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

  • 簡潔的 API 設計,使用如絲滑般流暢,支持鏈式調(diào)用

  • 囊括了 30+ 種常見圖表,應有盡有

  • 支持主流 Notebook 環(huán)境,Jupyter Notebook 和 JupyterLab

  • 可輕松集成至 Flask,Sanic,Django 等主流 Web 框架

  • 高度靈活的配置項,可輕松搭配出精美的圖表

  • 詳細的文檔和示例,幫助開發(fā)者更快的上手項目

  • 多達 400+ 地圖文件,并且支持原生百度地圖,為地理數(shù)據(jù)可視化提供強有力的支持

pyecharts版本v0.5.x 和 v1 間不兼容,v1 是一個全新的版本,語法也有很大不同。

2. 安裝

安裝pyecharts

pip install pyecharts -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
import pyecharts
print(pyecharts.__version__)     # 查看當前pyecharts版本

安裝相關(guān)的地圖擴展包

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple echarts-countries-pypkg  		# 全球國家地圖
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple echarts-china-provinces-pypkg  # 中國省級地圖
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple echarts-china-cities-pypkg   # 中國市級地圖
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple echarts-china-counties-pypkg  # 中國縣區(qū)級地圖

二、地圖可視化

1. 世界地圖

利用 Starbucks.csv 中的數(shù)據(jù),首先計算每個國家(Country)對應的門店數(shù)量,然后使用世界地圖可視化展示星巴克門面店在全球的數(shù)量分布。

# -*- coding: UTF-8 -*-
"""
@File  :demo1.py
@Author :葉庭云
@CSDN  :https://yetingyun.blog.csdn.net/
"""
import pandas as pd
from pyecharts.charts import Map
from pyecharts import options as opts
from pyecharts.globals import ThemeType, CurrentConfig

CurrentConfig.ONLINE_HOST = 'D:/python/pyecharts-assets-master/assets/'

# pandas讀取csv文件里的數(shù)據(jù)
df = pd.read_csv("Starbucks.csv")['Country']
# 統(tǒng)計各個地區(qū)星巴克門店數(shù)量
data = df.value_counts()
datas = [(i, int(j)) for i, j in zip(data.index, data.values)]


# 實例化一個Map對象
map_ = Map(init_opts=opts.InitOpts(theme=ThemeType.PURPLE_PASSION))
# 世界地圖
map_.add("門店數(shù)量", data_pair=datas, maptype="world")
map_.set_series_opts(label_opts=opts.LabelOpts(is_show=False))  # 不顯示label
map_.set_global_opts(
   title_opts=opts.TitleOpts(title="星巴克門店數(shù)量在全球分布", pos_left='40%', pos_top='10'),  # 調(diào)整title位置
   legend_opts=opts.LegendOpts(is_show=False),
   visualmap_opts=opts.VisualMapOpts(max_=13608, min_=1, is_piecewise=True,
   pieces=[{"max": 9, "min": 1, "label": "1-9", "color": "#00FFFF"},    # 分段 添加圖例注釋和顏色
     {"max": 99, "min": 10, "label": "10-99", "color": "#A52A2A"},
     {"max": 499, "min": 100, "label": "100-499", "color": "#0000FF	"},
     {"max": 999, "min": 500, "label": "500-999", "color": "#FF00FF"},
     {"max": 2000, "min": 1000, "label": "1000-2000", "color": "#228B22"},
     {"max": 3000, "min": 2000, "label": "2000-3000", "color": "#FF0000"},
     {"max": 20000, "min": 10000, "label": ">=10000", "color": "#FFD700"}
       ])
   )

# 渲染在網(wǎng)頁上
map_.render('星巴克門店在全球的分布.html')

運行效果如下:

使用Pyecharts怎么實現(xiàn)數(shù)據(jù)可視化

2. 國家地圖

漣漪散點圖

利用 china.csv 中的數(shù)據(jù),首先計算每個城市(City)對應的門店數(shù)量,然后使用 pyecharts 包內(nèi) Geo 模塊繪制星巴克門面店在中國各城市的數(shù)量分布的漣漪散點地圖。

import pandas as pd
from pyecharts.globals import ThemeType, CurrentConfig, GeoType
from pyecharts import options as opts
from pyecharts.charts import Geo

CurrentConfig.ONLINE_HOST = 'D:/python/pyecharts-assets-master/assets/'
# pandas讀取csv文件數(shù)據(jù)
df = pd.read_csv("china.csv")['City']
data = df.value_counts()

datas = [(i, int(j)) for i, j in zip(data.index, data.values)]
print(datas)

geo = Geo(init_opts=opts.InitOpts(width='1000px', height='600px', theme=ThemeType.DARK))
geo.add_schema(maptype='china', label_opts=opts.LabelOpts(is_show=True))  # 顯示label 省名
geo.add('門店數(shù)量', data_pair=datas, type_=GeoType.EFFECT_SCATTER, symbol_size=8)
geo.set_series_opts(label_opts=opts.LabelOpts(is_show=False))
geo.set_global_opts(title_opts=opts.TitleOpts(title='星巴克門店在中國的分布'),
          visualmap_opts=opts.VisualMapOpts(max_=550, is_piecewise=True,
          pieces=[{"max": 50, "min": 0, "label": "0-50", "color": "#708090"},    # 分段 添加圖例注釋 和顏色
               {"max": 100, "min": 51, "label": "51-100", "color": "#00FFFF"},
               {"max": 200, "min": 101, "label": "101-200", "color": "#00008B"},
               {"max": 300, "min": 201, "label": "201-300", "color": "#8B008B"},
               {"max": 600, "min": 500, "label": "500-600", "color": "#FF0000"},
                 ])
          )

geo.render("星巴克門店在中國的分布.html")

運行效果如下:

使用Pyecharts怎么實現(xiàn)數(shù)據(jù)可視化

動態(tài)軌跡圖

# -*- coding: UTF-8 -*-
"""
@File  :demo3.py
@Author :葉庭云
@CSDN  :https://yetingyun.blog.csdn.net/
"""
from pyecharts import options as opts
from pyecharts.charts import Geo
from pyecharts.globals import ChartType, SymbolType, CurrentConfig, ThemeType

CurrentConfig.ONLINE_HOST = 'D:/python/pyecharts-assets-master/assets/'
# 鏈式調(diào)用
c = (
  Geo()
  .add_schema(
    maptype="china",
    itemstyle_opts=opts.ItemStyleOpts(color="#323c48", border_color="#111"),
    label_opts=opts.LabelOpts(is_show=True)
  )
  .add(
    "",
    [("廣州", 55), ("北京", 66), ("杭州", 77), ("重慶", 88), ('成都', 100), ('???#39;, 80)],
    type_=ChartType.EFFECT_SCATTER,
    color="white",
  )
  .add(
    "",
    [("廣州", "上海"), ("廣州", "北京"), ("廣州", "杭州"), ("廣州", "重慶"),
     ('成都', '海口'), ('???#39;, '北京'), ('???#39;, '重慶'), ('重慶', '上海')
     ],
    type_=ChartType.LINES,
    effect_opts=opts.EffectOpts(
      symbol=SymbolType.ARROW, symbol_size=6, color="blue" # 軌跡線藍色
    ),
    linestyle_opts=opts.LineStyleOpts(curve=0.2), # 軌跡線彎曲度
  )
  .set_series_opts(label_opts=opts.LabelOpts(is_show=False))
  .set_global_opts(title_opts=opts.TitleOpts(title="動態(tài)軌跡圖"))
  .render("geo_lines_background.html")
)

運行效果如下:

使用Pyecharts怎么實現(xiàn)數(shù)據(jù)可視化

3. 省市地圖

熱力圖

# -*- coding: UTF-8 -*-
"""
@File  :demo4.py
@Author :葉庭云
@CSDN  :https://yetingyun.blog.csdn.net/
"""
from pyecharts import options as opts
from pyecharts.charts import Geo
from pyecharts.faker import Faker
from pyecharts.globals import GeoType, CurrentConfig

CurrentConfig.ONLINE_HOST = 'D:/python/pyecharts-assets-master/assets/'

c = (
  Geo()
  .add_schema(maptype="廣東", label_opts=opts.LabelOpts(is_show=True))
  .add(
    "熱力圖",
    [list(z) for z in zip(Faker.guangdong_city, Faker.values())],
    type_=GeoType.HEATMAP,
  )
  .set_series_opts(label_opts=opts.LabelOpts(is_show=True))
  .set_global_opts(
    visualmap_opts=opts.VisualMapOpts(), title_opts=opts.TitleOpts(title="Geo-廣東地圖")
  )
  .render("geo_guangdong.html")
)

運行效果如下:

使用Pyecharts怎么實現(xiàn)數(shù)據(jù)可視化

地圖上批量添加經(jīng)緯度數(shù)據(jù)

數(shù)據(jù)來源于美團網(wǎng)成都地區(qū)酒店信息,利用其中酒店的經(jīng)緯度數(shù)據(jù),批量添加在地圖上可視化。

# -*- coding: UTF-8 -*-
"""
@File  :demo5.py
@Author :葉庭云
@CSDN  :https://yetingyun.blog.csdn.net/
"""
import pandas as pd   
from pyecharts.charts import Geo  
from pyecharts import options as opts  
from pyecharts.globals import GeoType, CurrentConfig, ThemeType

CurrentConfig.ONLINE_HOST = 'D:/python/pyecharts-assets-master/assets/'
# 讀取Excel數(shù)據(jù) 數(shù)據(jù)來源美團網(wǎng)酒店信息
df = pd.read_excel("hotel.xlsx")

# 獲取 地點 經(jīng)緯度信息
geo_sight_coord = {df.iloc[i]['酒店地址']: [df.iloc[i]['經(jīng)度'], df.iloc[i]['緯度']] for i in range(len(df))}
data = [(df['酒店地址'][j], f"{int(df['最低價'][j])}元(最低價)") for j in range(len(df))]
# print(data)
# print(geo_sight_coord)

# 實例化Geo對象 導入成都地圖
g = Geo(init_opts=opts.InitOpts(theme=ThemeType.PURPLE_PASSION, width="1000px", height="600px"))
g.add_schema(maptype="成都")

for k, v in list(geo_sight_coord.items()):
  # 添加地址、經(jīng)緯度數(shù)據(jù)
  g.add_coordinate(k, v[0], v[1])

# 生成漣漪散點圖
g.add("", data_pair=data, type_=GeoType.EFFECT_SCATTER, symbol_size=6)
g.set_series_opts(label_opts=opts.LabelOpts(is_show=False))
g.set_global_opts(title_opts=opts.TitleOpts(title="成都-酒店地址分布"))
g.render("酒店地址分布.html")

看完上述內(nèi)容,你們對使用Pyecharts怎么實現(xiàn)數(shù)據(jù)可視化有進一步的了解嗎?如果還想了解更多知識或者相關(guān)內(nèi)容,請關(guān)注億速云行業(yè)資訊頻道,感謝大家的支持。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI