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

时间:2017-10-26 20:49:38

标签: python python-3.x bokeh

在我的一个Python 3.x项目中,我使用bokeh package生成折线图。这些图表应显示某些时间点的测量值。因此,我的x轴使用散景DateTimePickFormatter class格式化。下面是我使用的代码剪辑(略微简化):

# 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表示日期时间对象列表。测量值位于y_axis变量中。

我还不明白散景如何决定使用哪个音阶。有人对此有一些见解吗?有没有办法明确设定比例?

1 个答案:

答案 0 :(得分:0)

好的,我做了一些测试,散景似乎可以根据需要自动调整比例。请参阅下面的测试结果:

# 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

相关问题