天天看點

酷炫的遷徙圖和輪播圖,用pyecharts也可以做出來

1.pyecharts知識點回顧

1)知識回顧

前面我們已經講述了,如何使用

pyecharts

進行圖形的繪制,一共涉及到如下四步。我們今天就是按照下面這幾步來進行

遷徙圖

輪播圖

的繪制。

  • ① 選擇圖表類型;
  • ② 聲明圖形類并添加資料;
  • ③ 設定全局配置項和系列配置項;
  • ④ 顯示及儲存圖表;

2)遷徙圖

遷徙圖

類似于下面這種,利用一個曲線來顯示從一個地方到另外一個地方的運作軌迹。

酷炫的遷徙圖和輪播圖,用pyecharts也可以做出來

3)輪播圖

輪播圖

就是淘寶首頁面上的那種滾動大屏效果。在同一個頁面上,可以放置多張圖形,設定一定的輪播時間,它可以像放卡通片一樣給你滾動播放。

酷炫的遷徙圖和輪播圖,用pyecharts也可以做出來

2.遷徙圖的繪制

1)參數解釋

① Geo()類

Geo()類

是用于繪制區域地圖的類,既然是類,它及有自己的

初始化參數

,還有自己的

自定義方法

,該類的大緻形式是這樣的。

class Geo(
    # 初始化配置項
    init_opts: opts.InitOpts = opts.InitOpts()

    # 是否忽略不存在的坐标,預設值為 False,即不忽略
    is_ignore_nonexistent_coord: bool = False
)
# 該類擁有如下兩個方法。
# add_schema()方法主要作用:用于指定繪制哪個地方的地圖;
def add_schema();
# add()方法主要作用:用于為圖形添加資料;
def add();           

複制

② init_opts參數

init_opts

這個參數很常用,用于指定圖形畫布的大小。你不管繪制任何圖形,都可以采用如下的方式,調用這個參數。

  • 參數的添加位置

    :在初始化類名的時候,添加這個參數;
  • 使用

    :圖形類名(init_opts=opts.InitOpts(width=,height=));
  • width

    :指定畫布的寬度,預設是900px;
  • height

    :指定畫布的高度,預設是500px;
③ label_opts參數

label_opts

這個參數用于設定圖形标簽是否顯示,當圖形中的标簽太多的時候,可能字與字之間會重合,此時我們可以設定标簽不顯示就可以解決這個問題。

  • 參數的添加位置

    :在使用add()方法添加資料的時候,添加這個參數;
  • 使用

    :.add(…,…,label_opts=opts.LabelOpts(is_show=False));
  • is_show

    :預設是True,顯示标簽,False是不顯示标簽;
④ 關于add_schema()方法的說明

在繪制遷徙圖時,這個方法涉及到兩個重要參數。一個是

maptype

,一個是

itemstyle_opts

,下面我們分别進行叙述。

  • maptype

    :用于指定地圖類型,'china’代表繪制中國地圖,'湖北’代表繪制湖北地圖,'廣東’代表繪制廣東地圖;
  • itemstyle_opts=opts.ItemStyleOpts(color=’#323c48’,border_color=‘black’));
  • itemstyle_opts

    :圖元樣式配置項(官方取名),聽完名字我也不知道是做什麼的,其實是用來進行地圖顔色填充的參數。
  • color

    :用于指定地圖的背景填充色;
  • border_color

    :用于指定地區與地區之間的邊界線的顔色;
⑤ effect_opts參數

effect_opts

是漣漪特效配置項,該參數用于進行特效展示,設定了這個參數後,某個點會像水波泛起的漣漪一樣,向着周圍波動散開。

  • effect_opts=opts.EffectOpts(symbol=“arrow”, color=‘gold’, symbol_size=8));
  • symbol

    :指定該點的形狀,這裡指定的是箭頭形狀;
  • color

    :指定該點的顔色,這裡指定的是黃色;
  • symbol_size

    :指定該點的大小;
⑥ set_global_opts()方法

set_global_opts()

用于進行全局配置項的設定,常用于展示标題配置項和視覺映射配置項。

  • .set_global_opts(title_opts = opts.TitleOpts(title=“中國地圖”),visualmap_opts = opts.VisualMapOpts(min_=30, max_=110))
酷炫的遷徙圖和輪播圖,用pyecharts也可以做出來

2)繪圖代碼

# 1.導入相關庫
from pyecharts.charts import Geo
import pyecharts.options as opts
# 2.準備資料
city_num = [('武漢',105),('成都',70),('北京',99),
            ('西安',80),('杭州',60),('貴陽',34),
            ('上海',65),('深圳',54),('烏魯木齊',76),
            ('哈爾濱',47),('蘭州',56),('信陽',85)]
start_end = [('武漢','成都'),('武漢','北京'),('武漢','西安'),
             ('武漢','杭州'),('武漢','貴陽'),('武漢','上海'),
             ('武漢','深圳'),('武漢','烏魯木齊'),('武漢','哈爾濱'),
             ('武漢','蘭州'),('武漢','信陽')]

( 
    # 3.初始化地圖類
    Geo(init_opts=opts.InitOpts(width="700px",height="300px",theme="blue"))
    .add_schema(maptype='china', 
                itemstyle_opts=opts.ItemStyleOpts(color='#323c48', border_color='black'))
    # 4.添加資料
    .add('', data_pair=city_num, color='white')
    .add('', data_pair=start_end, type_="lines",label_opts=opts.LabelOpts(is_show=False),
         effect_opts=opts.EffectOpts(symbol="arrow", 
                                     color='gold', 
                                     symbol_size=8))
    .set_global_opts(
        title_opts = opts.TitleOpts(title="中國地圖"),
        visualmap_opts = opts.VisualMapOpts(min_=30, max_=110))
).render_notebook()  # 5.圖形展示           

複制

結果如下:

酷炫的遷徙圖和輪播圖,用pyecharts也可以做出來

3.輪播圖的繪制

1)參數解釋

由于其他參數,我們在上面已經進行了詳細的闡述,這裡我們隻講述不一樣的參數。參數其實挺多,我們需要邊用邊學,邊學邊總結,這樣才會越來越厲害。

① Timeline()類

Timeline()類

用于繪制輪播圖,既然它也是一個類,肯定也有自己的初始化屬性和相應的方法,該類的大緻形式是這樣的。

class Timeline(
    # 初始化配置項,參考 `global_options.InitOpts`
    init_opts: opts.InitOpts = opts.InitOpts()
)

# 該類擁有如下兩個方法。
# add_schema()方法主要作用:用于設定輪播時間,是否自動輪播;
def add_schema();
# add()方法主要作用:用于為圖形添加資料;
def add();           

複制

② add()方法
  • add(chart=map1, time_point=“湖北省疫情地圖”);
  • chart

    :你要添加哪一個圖;
  • time_point

    :用于指定輪播軸的起點、重點名稱;
③ add_schema()方法
  • add_schema(is_auto_play=True, play_interval=3000);
  • is_auto_play

    :是否自動輪播,預設是False,不自動輪播;
  • play_interval

    :輪播時間,機關是毫秒,3000毫秒就是3秒輪播一次;

2)繪圖代碼

from pyecharts.charts import Map, Timeline
from pyecharts import options

# 1. 準資料
hubei_city = ["武漢市","孝感市","黃岡市","荊州市","鄂州市","随州市",
        "襄陽市","黃石市","宜昌市","荊門市","鹹甯市","十堰市",
        "仙桃市","天門市","恩施土家族苗族自治州","潛江市","神農架林區"]
hubei_data = [3214,628,722,287,224,304,321,202,269,217,206,177,97,82,103,27,7]

guangdong_city = ["深圳市","廣州市","珠海市","佛山市","東莞市","中山市",
        "惠州市","汕頭市","湛江市","江門市","肇慶市","陽江市",
        "梅州市","茂名市","清遠市","揭陽市","韶關市",
        "潮州市","汕尾市","河源市"]
guangdong_data = [375,317,86,70,62,58,53,25,21,20,15,13,13,11,10,8,7,5,5,3]

# 2. 繪制湖北疫情地圖:格式一
map1 = (
    Map(init_opts=opts.InitOpts(width="700px",height="300px",theme="blue"))
    .add('', [(i,j) for i,j in zip(hubei_city,hubei_data)], '湖北')
    .set_global_opts(visualmap_opts=opts.VisualMapOpts(max_=4000))
)

# 3. 繪制廣東疫情地圖:格式二
map2 = (
    Map()
    .add('', [(i,j) for i,j in zip(guangdong_city,guangdong_data)], '廣東')
    .set_global_opts(visualmap_opts=opts.VisualMapOpts(max_=400,is_piecewise=True))
)

# 4. 建立組合類對象
timeline = Timeline(init_opts=opts.InitOpts(width='720px', height='350px'))

# 5. 在組合對象中添加需要組合的圖表對象

timeline.add(chart=map1, time_point="湖北省疫情地圖")
timeline.add(chart=map2, time_point="廣東省疫情地圖")
timeline.add_schema(is_auto_play=True, play_interval=3000)

# 6. 渲染資料
timeline.render_notebook()           

複制

結果如下:

酷炫的遷徙圖和輪播圖,用pyecharts也可以做出來