具有日期时间轴的散景图中的恒定宽度
Constant width in bokeh graph with datetime axis
我在散景中设置了一个堆叠条形图,每个条表示一个月:
各自的代码位如下:
p.vbar_stack(
categories,
x="zeit",
width=2629800000 * 0.9,
color=Category20c[len(categories)],
source=plot_data,
)
宽度以毫秒为单位指定,对应一个月的平均长度。我将其乘以 0.9 以在条形之间创建间隙。问题是由于月份长度的实际差异,柱之间的差距不同。这在 2 月和 3 月之间最为显着(例如,图中左侧的第三个和第四个柱)。
如何使条形宽度(和间隙)在几个月的长度内稳健?
在您的情况下,从语义上讲,它并不是真正的日期时间轴,而是分类轴。如果您切换到正确的分类轴,您的问题应该会得到解决。
如果您喜欢可变宽度的条,则可以使用 timedelta
作为宽度。我们必须每个月创建一个。这涉及 Feb/March 问题。我使用 line_width
来分隔条形图。
df['days'] = df.index.to_series().apply(lambda x: datetime.timedelta(days=x.days_in_month))
plot_data = ColumnDataSource(df)
p.vbar_stack(
categories,
x="zeit",
width='days',
line_width=1,
line_color='white',
color=Category20c[len(categories)],
source=plot_data,
)
我在散景中设置了一个堆叠条形图,每个条表示一个月:
各自的代码位如下:
p.vbar_stack(
categories,
x="zeit",
width=2629800000 * 0.9,
color=Category20c[len(categories)],
source=plot_data,
)
宽度以毫秒为单位指定,对应一个月的平均长度。我将其乘以 0.9 以在条形之间创建间隙。问题是由于月份长度的实际差异,柱之间的差距不同。这在 2 月和 3 月之间最为显着(例如,图中左侧的第三个和第四个柱)。
如何使条形宽度(和间隙)在几个月的长度内稳健?
在您的情况下,从语义上讲,它并不是真正的日期时间轴,而是分类轴。如果您切换到正确的分类轴,您的问题应该会得到解决。
如果您喜欢可变宽度的条,则可以使用 timedelta
作为宽度。我们必须每个月创建一个。这涉及 Feb/March 问题。我使用 line_width
来分隔条形图。
df['days'] = df.index.to_series().apply(lambda x: datetime.timedelta(days=x.days_in_month))
plot_data = ColumnDataSource(df)
p.vbar_stack(
categories,
x="zeit",
width='days',
line_width=1,
line_color='white',
color=Category20c[len(categories)],
source=plot_data,
)