Bokeh可视化库基础教程:线条与曲线绘制全解析

Bokeh可视化库基础教程:线条与曲线绘制全解析

bokeh bokeh/bokeh: 是一个用于创建交互式图形和数据的 Python 库。适合用于数据可视化、数据分析和呈现,以及创建动态的 Web 应用。特点是提供了一种简洁、直观的 API 来描述和处理数据,并生成交互式的可视化效果。 bokeh 项目地址: https://gitcode.com/gh_mirrors/bo/bokeh

概述

Bokeh是一个强大的Python交互式可视化库,它提供了丰富的图形绘制功能。本文将深入讲解Bokeh中各种线条和曲线的绘制方法,帮助开发者掌握数据可视化的基础技能。

基础线条绘制

单线绘制

在Bokeh中绘制单条线是最基础的操作,使用line()方法即可实现:

from bokeh.plotting import figure, show

# 创建绘图对象
p = figure(width=400, height=400)

# 添加单条线
p.line([1, 2, 3, 4, 5], [6, 7, 2, 4, 5], line_width=2)

show(p)

这种方法接受两个一维数组作为x和y坐标点,Bokeh会自动将这些点用直线段连接起来。

阶梯线绘制

当需要展示离散数据变化时,阶梯线比普通连线更合适:

p.step([1, 2, 3, 4, 5], [6, 7, 2, 4, 5], 
       mode="before", line_width=2)

mode参数有三种选项:

  • "before":阶梯变化发生在x坐标之前
  • "after":阶梯变化发生在x坐标之后
  • "center":阶梯变化发生在x坐标中间

高级线条绘制

多线绘制

Bokeh支持一次性绘制多条线,使用multi_line()方法:

p.multi_line([[1, 2, 3], [4, 5, 6]], 
             [[6, 7, 2], [3, 6, 5]],
             color=["firebrick", "navy"], 
             alpha=[0.8, 0.3], 
             line_width=4)

注意:multi_line()接受的是列表的列表,每个子列表代表一条线的坐标点。

处理缺失数据

在实际数据可视化中,经常会遇到数据缺失的情况。Bokeh可以正确处理NaN值:

from math import nan

p.line([1, 2, 3, nan, 5], 
       [6, 7, 2, 4, nan], 
       line_width=2)

重要提示:必须使用math.nannumpy.nan,不能使用Python的None,因为None会被解释为0。

特殊线条类型

线段绘制

使用segment()方法可以绘制独立的线段:

p.segment(x0=[1, 2, 3], y0=[1, 2, 3],
          x1=[1.5, 2.5, 3.5], y1=[1.2, 2.5, 3.9],
          color="olive", line_width=3)

射线绘制

ray()方法可以绘制从某点出发的射线:

p.ray(x=[1, 2, 3], y=[1, 2, 3], 
      length=45, angle=[45, -30, 60],
      angle_units="deg", 
      color="red", line_width=2)

设置length=0可以创建无限延伸的射线。

跨度线

水平或垂直的无限延伸线可以使用hspan()vspan()

p.hspan(y=[1, 2, 3], 
        line_width=[1, 2, 3], 
        color=["red", "green", "blue"])

曲线绘制

圆弧绘制

Bokeh支持绘制圆弧:

p.arc(x=3, y=3, radius=2, 
      start_angle=0.6, end_angle=4.8,
      color="navy", line_width=3)

通过direction参数可以控制绘制方向:"clock"为顺时针,"anticlock"为逆时针。

参数化曲线

Bokeh还支持绘制更复杂的参数化曲线:

# 二次贝塞尔曲线
p.quadratic(x0=[1], y0=[1], 
            x1=[4], y1=[4], 
            cx=[2], cy=[3],
            line_width=2)

# 三次贝塞尔曲线
p.bezier(x0=[1], y0=[1], 
         x1=[4], y1=[4], 
         cx0=[2], cy0=[3],
         cx1=[3], cy1=[2],
         line_width=2)

实用技巧

  1. 组合图形:可以在同一图表中组合多种图形元素

    p.line(x, y1, line_color="blue")
    p.circle(x, y2, size=8, fill_color="red")
    
  2. 堆叠线图:使用vline_stack()hline_stack()可以方便地创建堆叠线图

  3. 性能优化:当数据量大时,考虑使用ColumnDataSource来提高性能

通过掌握这些线条和曲线的绘制方法,您已经能够使用Bokeh创建丰富多样的数据可视化图表。在实际应用中,可以根据数据特点选择合适的图形类型,并通过调整各种参数来优化视觉效果。

bokeh bokeh/bokeh: 是一个用于创建交互式图形和数据的 Python 库。适合用于数据可视化、数据分析和呈现,以及创建动态的 Web 应用。特点是提供了一种简洁、直观的 API 来描述和处理数据,并生成交互式的可视化效果。 bokeh 项目地址: https://gitcode.com/gh_mirrors/bo/bokeh

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

井隆榕Star

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值