国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

使用Bokeh為你的Python繪圖添加交互性

開發 后端
在這一系列文章中,我通過在每個 Python 繪圖庫中制作相同的多條形繪圖,來研究不同 Python 繪圖庫的特性。這次我重點介紹的是 Bokeh(讀作 “BOE-kay”)。

[[330736]]

在 Bokeh 中繪圖比其他一些繪圖庫要復雜一些,但付出額外的努力是有回報的。

在這一系列文章中,我通過在每個 Python 繪圖庫中制作相同的多條形繪圖,來研究不同 Python 繪圖庫的特性。這次我重點介紹的是 Bokeh(讀作 “BOE-kay”)。

Bokeh 中的繪圖比其它一些繪圖庫要復雜一些,但付出的額外努力是有回報的。Bokeh 的設計既允許你在 Web 上創建自己的交互式繪圖,又能讓你詳細控制交互性如何工作。我將通過給我在這個系列中一直使用的多條形圖添加工具提示來展示這一點。它繪制了 1966 年到 2020 年之間英國選舉結果的數據。

 

繪圖的放大視圖(©2019 年 Anvil

制作多條形圖

在我們繼續之前,請注意你可能需要調整你的 Python 環境來讓這段代碼運行,包括以下:

  • 運行最新版本的 Python (在 LinuxMac 和 Windows 上的說明)
  • 確認你運行的 Python 版本能與這些庫一起工作。

數據可在線獲得,可以用 Pandas 導入。

  1. import pandas as pd
  2. df = pd.read_csv('https://anvil.works/blog/img/plotting-in-python/uk-election-results.csv')

現在我們可以繼續進行了。

為了做出多條形圖,你需要對你的數據進行一下調整。

原始數據是這樣的:

  1. >> print(long)
  2. year party seats
  3. 0 1966 Conservative 253
  4. 1 1970 Conservative 330
  5. 2 Feb 1974 Conservative 297
  6. 3 Oct 1974 Conservative 277
  7. 4 1979 Conservative 339
  8. .. ... ... ...
  9. 103 2005 Others 30
  10. 104 2010 Others 29
  11. 105 2015 Others 80
  12. 106 2017 Others 59
  13. 107 2019 Others 72
  14.  
  15. [60 rows x 3 columns]

你可以把數據看成是每一個可能的 (year, party) 組合的一系列 seats 值。這正是 Bokeh 處理的方式。你需要做一個 (year, party) 元組的列表:

  1. # 得到每種可能的 (year, party) 組合的元組
  2. x = [(str(r[1]['year']), r[1]['party']) for r in df.iterrows()]
  3. # This comes out as [('1922', 'Conservative'), ('1923', 'Conservative'), ... ('2019', 'Others')]

這些將是 x 值。y 值就是席位(seats)。

  1. y = df['seats']

現在你的數據看起來應該像這樣:

  1. x                               y
  2. ('1966', 'Conservative')        253
  3. ('1970', 'Conservative')        330
  4. ('Feb 1974', 'Conservative')    297
  5. ('Oct 1974', 'Conservative')    277
  6. ('1979', 'Conservative')        339
  7.  ...      ...                   ...
  8. ('2005', 'Others')              30
  9. ('2010', 'Others')              29
  10. ('2015', 'Others')              80
  11. ('2017', 'Others')              59
  12. ('2019', 'Others')              72

Bokeh 需要你將數據封裝在它提供的一些對象中,這樣它就能給你提供交互功能。將你的 x 和 y 數據結構封裝在一個 ColumnDataSource 對象中。

  1. from bokeh.models import ColumnDataSource
  2.  
  3. source = ColumnDataSource(data={'x': x, 'y': y})

然后構造一個 Figure 對象,并傳入你用 FactorRange 對象封裝的 x 數據。

  1.     from bokeh.plotting import figure
  2.     from bokeh.models import FactorRange
  3.    
  4.     p = figure(x_range=FactorRange(*x), width=2000, title="Election results")

你需要讓 Bokeh 創建一個顏色表,這是一個特殊的 DataSpec 字典,它根據你給它的顏色映射生成。在這種情況下,顏色表是一個簡單的黨派名稱和一個十六進制值之間的映射。

  1.     from bokeh.transform import factor_cmap
  2.  
  3.     cmap = {
  4.         'Conservative': '#0343df',
  5.         'Labour': '#e50000',
  6.         'Liberal': '#ffff14',
  7.         'Others': '#929591',
  8.     }
  9.     fill_color = factor_cmap('x', palette=list(cmap.values()), factors=list(cmap.keys()), start=1, end=2)

現在你可以創建條形圖了:

  1.     p.vbar(x='x', top='y', width=0.9, source=source, fill_color=fill_color, line_color=fill_color)

Bokeh 圖表上數據的可視化形式被稱為“字形glyphs”,因此你已經創建了一組條形字形。

調整圖表的細節,讓它看起來像你想要的樣子。

  1.     p.y_range.start = 0
  2.     p.x_range.range_padding = 0.1
  3.     p.yaxis.axis_label = 'Seats'
  4.     p.xaxis.major_label_orientation = 1
  5.     p.xgrid.grid_line_color = None

最后,告訴 Bokeh 你現在想看你的繪圖:

  1.    from bokeh.io import show
  2.  
  3.    show(p)

這將繪圖寫入一個 HTML 文件,并在默認的 Web 瀏覽器中打開它。如下結果:

 

Bokeh 中的多條形繪圖(©2019年Anvil

它已經有了一些互動功能,比如盒子縮放。

 

Bokeh 內置的盒子縮放(©2019Anvil

但 Bokeh 的厲害之處在于你可以添加自己的交互性。在下一節中,我們通過在條形圖中添加工具提示來探索這個問題。

給條形圖添加工具提示

要在條形圖上添加工具提示,你只需要創建一個 HoverTool 對象并將其添加到你的繪圖中。

  1.     h = HoverTool(tooltips=[
  2.         ('Seats', '@y'),
  3.         ('(Year, Party)', '(@x)')
  4.     ])
  5.     p.add_tools(h)

參數定義了哪些數據會顯示在工具提示上。變量 @y 和 @x 是指你傳入 ColumnDataSource 的變量。你還可以使用一些其他的值。例如,光標在圖上的位置由 $x 和 $y 給出(與 @x 和 @y 沒有關系)。

下面是結果:

 

選舉圖,現在帶有工具提示(© 2019 Anvil

借助 Bokeh 的 HTML 輸出,將繪圖嵌入到 Web 應用中時,你可以獲得完整的交互體驗。你可以在這里把這個例子復制為 Anvil 應用(注:Anvil 需要注冊才能使用)。

現在,你可以看到付出額外努力在 Bokeh 中將所有數據封裝在 ColumnDataSource 等對象的原因了。作為回報,你可以相對輕松地添加交互性。

回歸簡單:Altair

Bokeh 是四大最流行的繪圖庫之一,本系列將研究它們各自的特別之處

我也在研究幾個因其有趣的方法而脫穎而出的庫。接下來,我將看看 Altair,它的聲明式 API 意味著它可以做出非常復雜的繪圖,而不會讓你頭疼。

責任編輯:龐桂玉 來源: Linux中國
相關推薦

2018-03-09 15:25:47

IOT語義交叉

2010-11-15 16:33:07

Oracle交互性

2018-02-26 16:41:53

定義IOT語義

2023-09-25 10:26:05

DOMCSS

2020-12-20 19:26:20

LVMFedoraLinux

2011-12-07 09:29:56

移動終端網宿科技

2019-07-05 15:42:58

GitHub代碼開發者

2020-01-17 18:40:38

Python游戲代碼

2018-05-21 14:44:33

LinuxshellPython

2025-10-09 09:28:01

KotlinArkTS

2021-06-09 11:26:37

BokehPython可視化

2018-10-18 07:50:00

Python編程語言油箱加油

2013-09-09 16:37:48

iOS應用添加內置收費In App Purc

2022-02-25 19:29:07

Vue2esbuild項目

2016-09-21 09:16:55

Qlik

2011-04-22 11:12:42

JavaScript

2017-10-23 10:01:31

軟件交付大數據分析人工智能

2023-08-04 19:26:38

谷歌AI

2015-07-08 16:19:17

iOSUIVisualEff
點贊
收藏

51CTO技術棧公眾號

欧美日韩视频在线第一区| 男人的天堂久久| av在线com| 国产日韩在线精品av| 亚洲巨乳在线| 国产亚洲字幕| 在线免费观看黄色| 日本欧美视频在线观看| 欧美裸体xxxx极品少妇| 一区二区三区四区蜜桃| 成人晚上爱看视频| 国产最新精品精品你懂的| 中文字幕一区二区三区久久网站 | 久久亚洲专区| 欧美美女在线观看| 特黄特色欧美大片| 亚洲女娇小黑人粗硬| melody高清在线观看| 免费在线观看视频a| 成人激情视频在线播放| 91精品国产99| 亚洲国产中文字幕在线观看| 一区二区高清视频在线观看| k8久久久一区二区三区| 国产99久久久国产精品成人免费 | 亚洲午夜精品一区 二区 三区| 亚洲小说图片视频| 精品国产123区| 欧美在线首页| 欧美中文日韩| 日本不卡视频在线| 高清无码视频直接看| 欧美一级黄色录像片| 欧美日韩激情四射| 老太脱裤子让老头玩xxxxx| 国产区欧美区日韩区| 日韩精品极品视频在线观看免费| 日韩美女在线视频| 欧美日韩一区小说| 欧美日韩和欧美的一区二区| 欧美中文字幕一二三区视频| 欧美日韩免费观看一区二区三区 | 性爽视频在线| 久久69成人| 网红女主播少妇精品视频| 综合亚洲自拍| 亚洲综合激情| 成熟亚洲日本毛茸茸凸凹| 亚洲激情中文1区| 欧美日韩电影在线播放| 亚洲精品中文字幕女同| 欧美高清在线视频观看不卡| 日韩av免费在线| 国产丝袜不卡| 欧美在线观看视频免费| 三级免费网站| 在线观看三级视频| 美女日批视频在线观看| 日韩亚洲精品在线观看| 久久99高清| 午夜精品一区二区三区国产| 国产酒店精品激情| 久久日韩粉嫩一区二区三区| 欧美精品亚洲二区| 国产亚洲一区精品| 亚洲视频在线免费看| 1769国产精品| 国产精品亚洲网站| 91麻豆蜜桃| av网站免费观看| 在线观看的av网站| 涩涩屋成人免费视频软件| 日本欧美一区二区三区乱码| 午夜精品一区二区三区电影天堂| 中文字幕日韩欧美在线视频| 免费成人av网站| 在线中文字幕av| 老司机aⅴ在线精品导航| 日韩精品乱码免费| 亚洲午夜久久久久中文字幕久| 国产视频欧美视频| 成人在线观看91| 日本性视频网| 性欧美高清come| 欧美黄色影院| 不卡的电视剧免费网站有什么| 欧美美女喷水视频| 国产日韩在线一区二区三区| 三级视频在线| 久久精品亚洲人成影院| 欧美日韩国产精品| 国产一区红桃视频| 久久久久久久少妇| 一区中文字幕| 亚洲视频一区在线| 国模极品一区二区三区| 亚洲中文字幕无码av永久| 亚洲综合伊人久久大杳蕉| 美腿丝袜亚洲三区| 欧美一区二区三区小说| 欧美在线观看日本一区| ts人妖交友网站| 91精品国产自产在线观看永久∴| 午夜精品久久久久久不卡8050| 日韩综合中文字幕| 奇米精品在线| abab456成人免费网址| 久久99国内精品| 欧美成年人视频网站| wwwwww欧美| 日本欧美在线| 狠狠色综合日日| 久久精视频免费在线久久完整在线看| 精品欧美一区二区在线观看视频 | a一区二区三区| 成人免费91| 激情欧美日韩| 日韩精品一区二区三区三区免费| 国产乱肥老妇国产一区二| 免费91麻豆精品国产自产在线观看| 玖玖精品在线视频| 欧美综合精品| 亚洲欧美另类久久久精品| 国产成+人+综合+亚洲欧洲| 经典三级在线| 亚洲资源av| 国产一区二区久久精品| 日韩视频在线免费播放| 亚洲综合图片| 麻豆精品久久久| 欧美成人一区在线| 在线国产1区| 国产成人免费视频| 成人国产1314www色视频| 日本欧美日韩| 色综合久久久网| 丁香六月激情婷婷| 在线中文字幕第一区| 久久久www成人免费精品| 爱爱爱免费视频在线观看| www.亚洲激情.com| 成人国产精品一区二区| 瑟瑟视频在线看| 日本一区二区三区四区在线视频| 日韩高清三级| 欧美日韩中出| 日韩精品一二三四区| 毛片在线播放网址| 久久久99精品久久| 亚洲一区二区免费视频软件合集 | 亚洲综合99| 欧美做受高潮1| 日本视频不卡| 亚洲狠狠丁香婷婷综合久久久| 免费看成人午夜电影| 91精品秘密在线观看| 亚洲男人天堂九九视频| a√天堂在线观看| 成人高清视频免费观看| 综合一区中文字幕| 亚洲一区二区成人| 欧美在线视频在线播放完整版免费观看| 五月天天在线| 亚洲欧洲精品一区二区三区 | a级日韩大片| 伊人久久久久久久久久久久久| a级大胆欧美人体大胆666| 综合久久久久久| 国产情侣av自拍| 91麻豆福利精品推荐| 手机在线视频你懂的| 免费亚洲电影在线| 天天综合五月天| 欧美a级片视频| 亚洲最大的成人网| 日本亚州欧洲精品不卡| 伊人精品在线观看| 欧美爱爱视频| 日韩av一区二区在线观看| 女厕盗摄一区二区三区| 欧美一区二区三区成人| 国产在线88av| 日韩av福利| 国产一区二区三区精品久久久 | 国产精品va在线播放| 国产精品宾馆| 国产成人短视频| 一区在线视频观看| 日本在线视频一区| 成人一区二区三区| 免费看日本毛片| 亚洲一区成人在线| 成人高清网站| 亚洲区一区二区| 国产精一区二区| 成人午夜在线观看| 久久97久久97精品免视看秋霞| 51国偷自产一区二区三区 | 国产精品色哟哟网站| 色偷偷亚洲女人天堂观看欧|