提问人:skrhee 提问时间:7/31/2019 更新时间:7/31/2019 访问量:515
如何在散景中保持日期时间轴刻度固定?
How to keep datetime axis ticks fixed in bokeh?
问:
我试图在时间序列折线图中显示每个数据点的刻度,其中时间序列可以根据用户的选择重新采样到不同的速率。
分钟 - 小时 - 天 - 月。
如果用户选择小时,我希望每个刻度为一小时,如果用户选择一天,则为一天,依此类推。
然后,我希望这些刻度保持固定,这样当我缩放图表时,散景就不会在两者之间产生新的亚小时、次日刻度。
我尝试过在 x 轴上使用 desired_num_ticks,但是当我缩放图表时,我相信图表中的刻度数保持不变,因此给我的刻度低于我指定的时间刻度。
首先,我根据平均值或总和对数据进行重采样,具体取决于时间尺度。
# Read ##########################################################################
# Resample to Hour by average
if resample_rate == 'T':
pass
else:
df = df.resample('H').mean()
if resample_rate == 'H':
pass
else:
df = df.resample('{}'.format(resample_rate)).sum()
然后我尝试绘制我的数据。时间序列格式可以正常工作,但我无法让 x 轴按照我想要的方式运行。
energy_plot = figure(plot_width=1400,
plot_height=600,
title="Timeseries DC Power",
x_axis_type='datetime')
# Label Axes
energy_plot.xaxis[0].axis_label = 'Months'
energy_plot.yaxis[0].axis_label = 'DC Power [W]'
# background color
energy_plot.background_fill_color = "white"
energy_plot.background_fill_alpha = 0.5
# grid lines
energy_plot.xgrid.grid_line_color = None
energy_plot.ygrid.grid_line_color = None
colors = itertools.cycle(Dark2_5)
# plot all dc power
for column, label, c in zip(string_db_list, labels, colors):
energy_plot.line(df.index,
df['{}'.format(column)],
line_width=4,
alpha=0.8,
color=c,
visible=False,
legend="{}".format(label))
# clicking on the legend hides selection
energy_plot.legend.click_policy = "hide"
# Format the xaxis as datetime ticks
try:
energy_plot.xaxis.formatter = DatetimeTickFormatter(
hours=["%d %B %Y"],
days=["%d %B %Y"],
months=["%d %B %Y"],
years=["%d %B %Y"],)
energy_plot.xaxis.major_label_orientation = 3.14 / 4
energy_plot.xaxis[0].num_minor_ticks = 0
energy_plot.xaxis[0].desired_num_ticks = df.index
except:
pass
当图表初始化时,刻度数看起来不错,尽管当我放大时它不会保留。
答: 暂无答案
评论
try...except block