From 8adf446d43bf52927c4a086d0a63865e8260d889 Mon Sep 17 00:00:00 2001 From: Xingyu Wang Date: Thu, 18 Jun 2020 16:47:50 +0800 Subject: [PATCH] PRF @wxy --- ...ctivity to your Python plots with Bokeh.md | 58 +++++++------------ 1 file changed, 22 insertions(+), 36 deletions(-) diff --git a/translated/tech/20200529 Add interactivity to your Python plots with Bokeh.md b/translated/tech/20200529 Add interactivity to your Python plots with Bokeh.md index 4ec9e1a079..14368c2e8b 100644 --- a/translated/tech/20200529 Add interactivity to your Python plots with Bokeh.md +++ b/translated/tech/20200529 Add interactivity to your Python plots with Bokeh.md @@ -1,6 +1,6 @@ [#]: collector: (lujun9972) [#]: translator: (wxy) -[#]: reviewer: ( ) +[#]: reviewer: (wxy) [#]: publisher: ( ) [#]: url: ( ) [#]: subject: (Add interactivity to your Python plots with Bokeh) @@ -10,13 +10,13 @@ 使用 Bokeh 为你的 Python 绘图添加交互性 ====== -> Bokeh 中的绘图比其他一些绘图库要复杂一些,但付出额外的努力是有回报的。 +> 在 Bokeh 中绘图比其他一些绘图库要复杂一些,但付出额外的努力是有回报的。 -![Hands on a keyboard with a Python book ][1] +![](https://img.linux.net.cn/data/attachment/album/202006/18/164708zz7tjxz7m7ax5lt3.jpg) -在这一系列文章中,我通过在每个 Python 绘图库中制作相同的多条形绘图,来了解不同 Python 绘图库的特点。这次我重点介绍的是 [Bokeh][2](读作“BOE-kay”)。 +在这一系列文章中,我通过在每个 Python 绘图库中制作相同的多条形绘图,来研究不同 Python 绘图库的特性。这次我重点介绍的是 [Bokeh][2](读作 “BOE-kay”)。 -Bokeh 中的绘图比[其它一些绘图库][3]要复杂一些,但额外的努力是有回报的。Bokeh 的设计既允许你在网络上创建自己的交互式绘图,又能让你详细控制交互性如何工作。我将通过给我在这个系列中使用的多条形图添加一个工具提示来展示这一点。它绘制了 1966 年到 2020 年之间英国选举结果的数据。 +Bokeh 中的绘图比[其它一些绘图库][3]要复杂一些,但付出的额外努力是有回报的。Bokeh 的设计既允许你在 Web 上创建自己的交互式绘图,又能让你详细控制交互性如何工作。我将通过给我在这个系列中一直使用的多条形图添加工具提示来展示这一点。它绘制了 1966 年到 2020 年之间英国选举结果的数据。 ![][4] @@ -26,10 +26,10 @@ Bokeh 中的绘图比[其它一些绘图库][3]要复杂一些,但额外的努 在我们继续之前,请注意你可能需要调整你的 Python 环境来让这段代码运行,包括以下: -- 运行最新版本的 Python ([Linux][11]、[Mac][12] 和 [Windows][13] 的说明) +- 运行最新版本的 Python (在 [Linux][11]、[Mac][12] 和 [Windows][13] 上的说明) - 确认你运行的 Python 版本能与这些库一起工作。 -网上有数据,可以用 pandas 导入。 +数据可在线获得,可以用 Pandas 导入。 ``` import pandas as pd @@ -62,23 +62,20 @@ df = pd.read_csv('https://anvil.works/blog/img/plotting-in-python/uk-election-re 你可以把数据看成是每一个可能的 `(year, party)` 组合的一系列 `seats` 值。这正是 Bokeh 处理的方式。你需要做一个 `(year, party)` 元组的列表: - ``` -# Get a tuple for each possible (year, party) combination +# 得到每种可能的 (year, party) 组合的元组 x = [(str(r[1]['year']), r[1]['party']) for r in df.iterrows()] # This comes out as [('1922', 'Conservative'), ('1923', 'Conservative'), ... ('2019', 'Others')] ``` -这些将是 x 值。y 值是简单的席位。 - +这些将是 `x` 值。`y` 值就是席位(`seats`)。 ``` y = df['seats'] ``` -现在你的数据看起来像这样: - +现在你的数据看起来应该像这样: ``` x                               y @@ -95,8 +92,7 @@ x                               y ('2019', 'Others')              72 ``` -Bokeh 需要你将数据封装在它提供的一些对象中,这样它就能给你提供交互功能。将你的 x 和 y 数据结构封装在一个 `ColumnDataSource` 对象中。 - +Bokeh 需要你将数据封装在它提供的一些对象中,这样它就能给你提供交互功能。将你的 `x` 和 `y` 数据结构封装在一个 `ColumnDataSource` 对象中。 ``` from bokeh.models import ColumnDataSource @@ -104,8 +100,7 @@ Bokeh 需要你将数据封装在它提供的一些对象中,这样它就能 source = ColumnDataSource(data={'x': x, 'y': y}) ``` -然后构造一个 `Figure` 对象,并传入你的用 `FactorRange` 对象封装的 x 数据。 - +然后构造一个 `Figure` 对象,并传入你用 `FactorRange` 对象封装的 `x` 数据。 ```     from bokeh.plotting import figure @@ -114,7 +109,7 @@ Bokeh 需要你将数据封装在它提供的一些对象中,这样它就能     p = figure(x_range=FactorRange(*x), width=2000, title="Election results") ``` -你需要让 Bokeh 创建一个颜色表--这是一个特殊的 `DataSpec` 字典,它根据你给它的颜色映射生成。在这种情况下,颜色表是一个简单的党派名称和一个十六进制值之间的映射。 +你需要让 Bokeh 创建一个颜色表,这是一个特殊的 `DataSpec` 字典,它根据你给它的颜色映射生成。在这种情况下,颜色表是一个简单的党派名称和一个十六进制值之间的映射。 ```     from bokeh.transform import factor_cmap @@ -130,16 +125,14 @@ Bokeh 需要你将数据封装在它提供的一些对象中,这样它就能 现在你可以创建条形图了: - ```     p.vbar(x='x', top='y', width=0.9, source=source, fill_color=fill_color, line_color=fill_color) ``` -Bokeh 图表上数据的可视化表示被称为“字形glyphs”,因此你已经创建了一组条形字形。 +Bokeh 图表上数据的可视化形式被称为“字形glyphs”,因此你已经创建了一组条形字形。 调整图表的细节,让它看起来像你想要的样子。 - ```     p.y_range.start = 0     p.x_range.range_padding = 0.1 @@ -150,7 +143,6 @@ Bokeh 图表上数据的可视化表示被称为“字形glyphs字形glyphs字形glyphs