Bokeh 如何使用Bokeh创建饼图
在本文中,我们将介绍如何使用Bokeh库创建饼图。Bokeh是一个Python库,用于生成交互式的、可视化程度高的图形。饼图是一种常用的数据可视化方式,它可以清晰地展示各部分占整体的比例关系。
阅读更多:Bokeh 教程
Bokeh简介
Bokeh是一个功能强大、灵活且易于使用的Python数据可视化库。它可以生成漂亮并且高度可交互的图形,使得数据分析和探索更加直观和有趣。Bokeh支持多种类型的图形,包括折线图、柱状图、散点图和饼图等,并提供了丰富的图形配置选项和交互功能。
创建基本饼图
要创建一个基本的饼图,我们需要先导入Bokeh库,并创建一个数据源。饼图的数据源是一个包含各个部分比例的列表。下面是一个示例代码:
from bokeh.plotting import figure, show
# 饼图数据
data = [0.35, 0.25, 0.20, 0.10, 0.10] # 各部分的比例
# 创建饼图
p = figure(title="基本饼图", toolbar_location=None, tools="hover", tooltips="@x")
p.wedge(x=0, y=0, radius=0.4,
start_angle=[i * 2 * 3.14159 for i in range(len(data))],
end_angle=[(i + 1) * 2 * 3.14159 for i in range(len(data))],
line_color="white", fill_color=["red", "green", "blue", "yellow", "orange"],
legend_label=["部分1", "部分2", "部分3", "部分4", "部分5"])
# 显示饼图
show(p)
上述代码首先导入了必要的库,然后创建了一个数据源 data
,包含了五个部分的比例。接下来,通过创建 figure
对象来生成一个饼图,设置了标题、工具栏、提示等相关参数。最后调用 show
函数将饼图显示出来。
自定义饼图
Bokeh不仅可以生成简单的饼图,还可以根据需求进行更加个性化的定制。我们可以调整饼图的颜色、标签、线条样式等。下面是一个自定义饼图的示例代码:
from bokeh.plotting import figure, show
# 饼图数据
data = [0.35, 0.25, 0.20, 0.10, 0.10] # 各部分的比例
# 创建饼图
p = figure(title="自定义饼图", toolbar_location=None, hover_fill_alpha=0.5)
p.wedge(x=0, y=0, radius=0.4,
start_angle=[i * 2 * 3.14159 for i in range(len(data))],
end_angle=[(i + 1) * 2 * 3.14159 for i in range(len(data))],
line_color="white", fill_color=["red", "green", "blue", "yellow", "orange"],
legend_label=["部分1", "部分2", "部分3", "部分4", "部分5"],
inner_radius=0.2, outer_radius=0.6, direction="clock")
# 配置饼图样式
p.legend.location = "top_left"
p.axis.visible = False
# 显示饼图
show(p)
上述代码中,我们通过设置 hover_fill_alpha
参数来改变饼图的透明度,用于控制鼠标悬浮时部分区域的高亮效果。同时,我们还设置了饼图的内外半径、方向、图例位置和是否显示坐标轴等。
饼图标签和交互
除了调整饼图的样式外,Bokeh还提供了丰富的交互功能。我们可以为饼图添加标签,用于显示各个部分的具体数值。下面是一个示例代码:
from bokeh.plotting import figure, show
from bokeh.models import Span, Label, LabelSet
# 饼图数据
data = [0.35, 0.25, 0.20, 0.10, 0.10] # 各部分的比例
# 创建饼图
p = figure(title="带标签的饼图", toolbar_location=None, tools="hover", tooltips="@x")
p.wedge(x=0, y=0, radius=0.4,
start_angle=[i * 2 * 3.14159 for i in range(len(data))],
end_angle=[(i + 1) * 2 * 3.14159 for i in range(len(data))],
line_color="white", fill_color=["red", "green", "blue", "yellow", "orange"],
legend_label=["部分1", "部分2", "部分3", "部分4", "部分5"])
# 添加标签
labels = [f"{int(d * 100)}%" for d in data] # 将比例转换为百分比形式
source = p.x_range.start
for i, label in enumerate(labels):
angle = (i + 0.5) / len(data) * 2 * 3.14159
p.add_layout(Label(x=0.65 * p.x_range.start * cos(angle),
y=0.65 * p.y_range.start * sin(angle),
text=label, text_color="white"))
# 显示饼图
show(p)
上述代码中,我们在饼图中添加了标签,用于显示各个部分的具体比例数值,并将比例转换为百分比形式。通过计算标签的位置,使得标签以指定的角度显示在饼图的内部。
总结
以上介绍了如何使用Bokeh库创建饼图。我们可以根据需求,定制饼图的样式、标签和交互等。Bokeh提供了丰富的功能和灵活的配置选项,使得我们可以轻松地生成高质量的数据可视化图形。使用Bokeh创建饼图,可以更加直观地展示数据的比例关系,帮助我们更好地理解和分析数据。希望本文对你有所帮助!