You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Bokeh折线图X轴优化:仅显示有数据的年度周数刻度

解决Bokeh折线图X轴仅显示存在数据的周数刻度

步骤说明

  • 导入Bokeh所需的自定义刻度和格式化模块:

    from bokeh.models import FixedTicker, DatetimeTickFormatter
    import time
    
  • 修改图表的X轴配置,替换自动生成的刻度为仅包含数据点的自定义刻度:

    1. 从数据源中提取所有存在的日期,转换为Bokeh兼容的毫秒级时间戳(如果DateTime是Python原生datetime对象,用time.mktime转换;如果是PandasTimestamp,用dt.value // 10**6):
      tick_timestamps = [time.mktime(dt.timetuple()) * 1000 for dt in sourceIndicatori.data['DateTime']]
      
    2. 配置X轴刻度器和格式化器,仅显示数据对应的周数:
      plotIndicatori.xaxis.ticker = FixedTicker(ticks=tick_timestamps)
      plotIndicatori.xaxis.formatter = DatetimeTickFormatter(
          weeks=["%W/%Y"],
          days=["%W/%Y"],
          hours=["%W/%Y"]
      )
      

完整修改后的代码

from bokeh.models import FixedTicker, DatetimeTickFormatter
import time

plotIndicatori = figure(plot_width=int(850), plot_height=int(165),
                        tools="pan,box_zoom,reset",
                        title=nomeIndicatore,
                        x_axis_type="datetime")
plotIndicatori.toolbar.logo = None
plotIndicatori.y_range.start = 0
plotIndicatori.y_range.end = rangeMax + 5
plotIndicatori.line(x='DateTime', y='Valore', color="navy", alpha=1, source=sourceIndicatori)
plotIndicatori.circle(x='DateTime', y='Valore', color="navy", alpha=1, source=sourceIndicatori)
plotIndicatori.xgrid.grid_line_color = None
plotIndicatori.outline_line_color = background
plotIndicatori.border_fill_color = background
plotIndicatori.background_fill_color = background

# 自定义X轴刻度,仅显示有数据的周数
tick_timestamps = [time.mktime(dt.timetuple()) * 1000 for dt in sourceIndicatori.data['DateTime']]
plotIndicatori.xaxis.ticker = FixedTicker(ticks=tick_timestamps)
plotIndicatori.xaxis.formatter = DatetimeTickFormatter(
    weeks=["%W/%Y"],
    days=["%W/%Y"],
    hours=["%W/%Y"]
)

补充说明

  • 格式字符串%W/%Y表示周一为一周起始的周数+年份,若需要周日起始的周数,可替换为%U/%Y。
  • 配置后X轴只会渲染数据源中存在的日期对应的刻度,不会生成多余的日期标签。

内容的提问来源于stack exchange,提问作者bircastri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 13:20:26