简体   繁体   English

在Python散景折线图中的日期/时间轴上设置比例

[英]Set Scale on Date/Time Axis in Python Bokeh Line Charts

In one of my Python 3.x projects I use the bokeh package to generate line charts. 在我的Python 3.x项目之一中,我使用bokeh包生成折线图。 These charts shall display measured values at certain points in time. 这些图表应显示某些时间点的测量值。 Therefore, my x-axis is formatted using bokeh's DateTimePickFormatter class . 因此,我的x轴是使用bokeh的DateTimePickFormatter类进行格式化的。 Below is the code snipped I use (slightly simplified): 下面是我使用的代码片段(略有简化):

# Format x-axis
plot.xaxis.formatter=DatetimeTickFormatter(
    seconds = ['%H:%M:%S'],
    minsec = ['%H:%M:%S'],
    minutes = ['%H:%M'],
    hourmin = ['%H:%M'],
    hours = ['%H:%M'],
    days = ['%d.%m.%Y'],
    months = ['%m.%Y'],
    years = ['%Y']
)

# Plot the line
plot.line(x_axis, y_axis)

x_axis represents a list of datetime-objects. x_axis代表日期时间对象的列表。 Measured values reside in the y_axis variable. 测量值驻留在y_axis变量中。

I did not understand yet how bokeh decides on which scale to use. 我还不了解bokeh是如何决定使用哪种规模的。 Anyone has some insights on this? 有人对此有见解吗? Is there a way to explicitly set a scale? 有没有一种方法可以明确设置比例尺?

Ok, I did some testing and bokeh seems to nicely auto-adjust the scale as required. 好的,我做了一些测试,散景似乎很好地根据需要自动调整了比例。 Please see my test results below: 请在下面查看我的测试结果:

# Test case 1:
# Multiple years, one measure per year
d1 = datetime(2012, 3, 5, 17, 53, 20)
d2 = datetime(2013, 8, 28, 13, 45, 48)
d3 = datetime(2014, 1, 29, 4, 58, 3)
d4 = datetime(2015, 11, 2, 15, 44, 9)
d5 = datetime(2016, 12, 7, 19, 53, 43)
d6 = datetime(2017, 7, 14, 16, 20, 32)
x_axis = [d1,d2,d3,d4,d5,d6]
y_axis = [23,12,58,43,5,33]
plot.line(x_axis, y_axis, line_color="red", line_width=2) 

Chart Multiple Years - One Measure Per Year 绘制多年图表-每年一种度量

# Test case 2:
# Multiple years, multiple measures per year
d1 = datetime(2012, 3, 5, 17, 53, 20)
d2 = datetime(2012, 4, 17, 13, 34, 5)
d3 = datetime(2012, 11, 1, 19, 59, 43)
d4 = datetime(2013, 4, 28, 13, 45, 48)
d5 = datetime(2013, 8, 17, 13, 34, 5)
d6 = datetime(2013, 11, 1, 19, 59, 43)
d7 = datetime(2013, 12, 31, 15, 56, 0)
d8 = datetime(2014, 1, 29, 4, 58, 3)
d9 = datetime(2014, 2, 2, 2, 14, 2)
d10 = datetime(2015, 11, 2, 15, 44, 9)
d11 = datetime(2015, 12, 14, 2, 3, 5)
d12 = datetime(2016, 11, 7, 19, 53, 43)
d13 = datetime(2016, 12, 18, 19, 53, 43)
d14 = datetime(2017, 1, 8, 19, 53, 43)
d15 = datetime(2017, 2, 8, 19, 53, 43)
d16 = datetime(2017, 7, 14, 16, 20, 32)
x_axis = [d1,d2,d3,d4,d5,d6,d7,d8,d9,d10,d11,d12,d13,d14,d15,d16]
y_axis = [23,12,58,43,5,33,20,18,24,19,31,28,29,14,7,13]
plot.line(x_axis, y_axis, line_color="red", line_width=2)

Chart Multiple Years - Multiple Measures Per Year 绘制多年图表-每年多个度量

# Test case 3:
# One year, multiple measures
d1 = datetime(2017, 1, 5, 17, 53, 20)
d2 = datetime(2017, 1, 17, 13, 34, 5)
d3 = datetime(2017, 2, 1, 19, 59, 43)
d4 = datetime(2017, 2, 28, 13, 45, 48)
d5 = datetime(2017, 3, 1, 13, 34, 5)
d6 = datetime(2017, 4, 17, 19, 59, 43)
d7 = datetime(2017, 5, 19, 15, 56, 0)
d8 = datetime(2017, 5, 29, 4, 58, 3)
d9 = datetime(2017, 6, 2, 2, 14, 2)
d10 = datetime(2017, 7, 2, 15, 44, 9)
d11 = datetime(2017, 8, 14, 2, 3, 5)
d12 = datetime(2017, 9, 7, 19, 53, 43)
d13 = datetime(2017, 10, 18, 19, 53, 43)
d14 = datetime(2017, 11, 8, 19, 53, 43)
d15 = datetime(2017, 12, 8, 19, 53, 43)
d16 = datetime(2017, 12, 14, 16, 20, 32)
x_axis = [d1,d2,d3,d4,d5,d6,d7,d8,d9,d10,d11,d12,d13,d14,d15,d16]
y_axis = [23,12,58,43,5,33,20,18,24,19,31,28,29,14,7,13]
plot.line(x_axis, y_axis, line_color="red", line_width=2)

Chart One Year - Multiple Measures Per Year 一年图表-每年多种度量

# Test case 4:
# One day, multiple measures
d1 = datetime(2017, 1, 14, 1, 53, 20)
d2 = datetime(2017, 1, 14, 3, 34, 5)
d3 = datetime(2017, 1, 14, 3, 59, 43)
d4 = datetime(2017, 1, 14, 7, 45, 48)
d5 = datetime(2017, 1, 14, 9, 34, 5)
d6 = datetime(2017, 1, 14, 13, 59, 43)
d7 = datetime(2017, 1, 14, 14, 56, 0)
d8 = datetime(2017, 1, 14, 14, 58, 3)
d9 = datetime(2017, 1, 14, 17, 14, 2)
d10 = datetime(2017, 1, 14, 18, 44, 9)
d11 = datetime(2017, 1, 14, 19, 3, 5)
d12 = datetime(2017, 1, 14, 19, 53, 43)
d13 = datetime(2017, 1, 14, 20, 53, 43)
d14 = datetime(2017, 1, 14, 21, 53, 43)
d15 = datetime(2017, 1, 14, 22, 53, 43)
d16 = datetime(2017, 1, 14, 23, 20, 32)
x_axis = [d1,d2,d3,d4,d5,d6,d7,d8,d9,d10,d11,d12,d13,d14,d15,d16]
y_axis = [23,12,58,43,5,33,20,18,24,19,31,28,29,14,7,13]
plot.line(x_axis, y_axis, line_color="red", line_width=2) 

Chart One Day - Multiple Measures Per Day 一日图表-每天多种度量

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM