📜  Bokeh-区域图(1)

📅  最后修改于: 2023-12-03 15:29:38.163000             🧑  作者: Mango

Bokeh-区域图

Bokeh 是一个用于构建交互式数据可视化工具的 Python 库。其中的区域图是一种非常流行的可视化形式,常常用于展示多个数据序列之间的关系。本文将重点介绍 Bokeh 中的区域图,让程序员们能够掌握该技能。

区域图的基本概念

区域图由一组数据序列组成,每条序列对应一个区域。通常情况下,该序列表示某个变量在时间或者空间上的变化情况。在 Bokeh 中,我们可以使用 area 函数来创建区域图。下面是一个简单的例子:

from bokeh.plotting import figure, output_file, show

p = figure(title="Basic Area Plot Example")
x = [1, 2, 3, 4, 5]
y1 = [5, 4, 3, 2, 1]
y2 = [1, 2, 3, 4, 5]

p.varea(x=x, y1=y1, y2=y2, legend_label="Area", fill_alpha=0.5)

output_file("area.html")
show(p)

该例子中,varea 函数用来创建一个垂直方向上的区域图。其中的参数 xy1 分别表示 x 轴和 y 轴上的数据。而参数 y2 则表示区域的边界。另外还有一些其他参数用于控制图形的属性,例如 legend_label 用于设置图例的标签,而 fill_alpha 则用于设置区域的填充透明度。

区域图的进阶应用

在实际应用中,区域图往往不仅仅是一个简单的数据展现形式,它还可以结合其他工具进行更加丰富的可视化呈现,下面是一些常见的应用场景:

1. 比较基础数据变化趋势

区域图可以帮助我们直观的比较基础数据在时间上的变化情况。例如下面这个例子展示了某个公司每月的营业额和成本情况:

from bokeh.palettes import Spectral6
from bokeh.plotting import figure, output_file, show

p = figure(title="Basic Area Plot Example", x_axis_type="datetime")
x = [datetime(2018, 1, 1), datetime(2018, 2, 1), datetime(2018, 3, 1), datetime(2018, 4, 1), datetime(2018, 5, 1)]
y1 = [20000, 30000, 50000, 40000, 60000]
y2 = [10000, 12000, 15000, 11000, 13000]

p.varea(x=x, y1=y1, y2=y2, legend_label="Area", fill_alpha=0.5, color=Spectral6[5])

output_file("area.html")
show(p)
2. 绘制复杂的多元数据分布图

除了显示基础数据在时间上的变化趋势,区域图也常常用于展示多元数据在时空上的关联。例如下面这个例子中,我们绘制了美国各州在不同年份的出生率和死亡率的关系。

from bokeh.palettes import Spectral10
from bokeh.plotting import figure, output_file, show

data = {'Year': [1952, 1957, 1962, 1967, 1972, 1977, 1982, 1987, 1992, 1997, 2002, 2007],
        'Alabama': [34.5, 35.1, 34.6, 33.2, 32.2, 32.6, 31.8, 30.8, 28.1, 27.8, 26.2, 24.6],
        'Alaska': [25.1, 26.3, 25.9, 25.8, 25.2, 25.5, 25.3, 24.2, 23.3, 24.3, 25.3, 24.2],
        'Arizona': [29.4, 31.4, 32, 33.5, 35.1, 35.5, 36, 33.5, 31.4, 28.9, 26.9, 25.3],
        'Arkansas': [39.9, 40.6, 41.6, 39.9, 35.7, 35.6, 33.8, 35.1, 32, 33.8, 31.9, 30],
        'California': [26.9, 27.7, 26.3, 28.1, 32.1, 32.2, 33.2, 31.2, 29.3, 26, 24.6, 23.5]
       }

p = figure(title="US State Health Data Area Plot Example", x_axis_label='Year', y_axis_label='% of Population')

colors = Spectral10

for i, state in enumerate(data.columns[1:]):
    p.varea_stack(stackers=[state], x='Year', color=colors[i], source=data, legend_label=state, fill_alpha=0.5)

output_file("area.html")
show(p)

如上所示,我们使用 varea_stack 函数绘制了多个州的区域图。其中每个州的颜色呈现一种渐变色,相邻的颜色两两之间呈互补色,使得整个图形更加美观,同时也方便读者区分各个元素。

总结

本文主要介绍了 Bokeh 中的区域图。其中包括了基本概念和进阶应用场景,相信对于大部分程序员来说已经足够了解并掌握。当然,如果你希望了解更多关于 Bokeh 的内容,可以参考其官方文档