在 Bokeh 上仅显示 Y 轴的一部分
Display only part of Y-axis on Bokeh
使用 Bokeh 0.8.1,我如何才能显示较长的时间序列,但只在一部分开始 'zoomed-in',同时保持其余数据可用于滚动?
例如,考虑以下时间序列(自 1980 年以来的 IBM 股票价格),我怎样才能让我的图表最初只显示自 01/01/2014 以来的价格?
示例代码:
import pandas as pd
import bokeh.plotting as bk
from bokeh.models import ColumnDataSource
bk.output_notebook()
TOOLS="pan,wheel_zoom,box_zoom,reset,save"
# Quandl data, too lazy to generate some random data
df = pd.read_csv('https://www.quandl.com/api/v1/datasets/GOOG/NYSE_IBM.csv')
df['Date'] = pd.to_datetime(df['Date'])
df = df[['Date', 'Close']]
#Generating a bokeh source
source = ColumnDataSource()
dtest = {}
for col in df:
dtest[col] = df[col]
source = ColumnDataSource(data=dtest)
# plotting stuff !
p = bk.figure(title='title', tools=TOOLS,x_axis_type="datetime", plot_width=600, plot_height=300)
p.line(y='Close', x='Date', source=source)
bk.show(p)
输出:
但我想得到这个(你可以用框缩放工具实现 - 但我想立即开始这样)
因此,看起来(从 0.8.1 开始)我们需要添加一些更方便的方法来设置日期时间值的范围。也就是说,虽然这有点难看,但它目前对我有用:
import time, datetime
x_range = (
time.mktime(datetime.datetime(2014, 1, 1).timetuple())*1000,
time.mktime(datetime.datetime(2016, 1, 1).timetuple())*1000
)
p = bk.figure(
title='title', tools=TOOLS,x_axis_type="datetime",
plot_width=600, plot_height=300, x_range=x_range
)
使用 Bokeh 0.8.1,我如何才能显示较长的时间序列,但只在一部分开始 'zoomed-in',同时保持其余数据可用于滚动?
例如,考虑以下时间序列(自 1980 年以来的 IBM 股票价格),我怎样才能让我的图表最初只显示自 01/01/2014 以来的价格?
示例代码:
import pandas as pd
import bokeh.plotting as bk
from bokeh.models import ColumnDataSource
bk.output_notebook()
TOOLS="pan,wheel_zoom,box_zoom,reset,save"
# Quandl data, too lazy to generate some random data
df = pd.read_csv('https://www.quandl.com/api/v1/datasets/GOOG/NYSE_IBM.csv')
df['Date'] = pd.to_datetime(df['Date'])
df = df[['Date', 'Close']]
#Generating a bokeh source
source = ColumnDataSource()
dtest = {}
for col in df:
dtest[col] = df[col]
source = ColumnDataSource(data=dtest)
# plotting stuff !
p = bk.figure(title='title', tools=TOOLS,x_axis_type="datetime", plot_width=600, plot_height=300)
p.line(y='Close', x='Date', source=source)
bk.show(p)
输出:
但我想得到这个(你可以用框缩放工具实现 - 但我想立即开始这样)
因此,看起来(从 0.8.1 开始)我们需要添加一些更方便的方法来设置日期时间值的范围。也就是说,虽然这有点难看,但它目前对我有用:
import time, datetime
x_range = (
time.mktime(datetime.datetime(2014, 1, 1).timetuple())*1000,
time.mktime(datetime.datetime(2016, 1, 1).timetuple())*1000
)
p = bk.figure(
title='title', tools=TOOLS,x_axis_type="datetime",
plot_width=600, plot_height=300, x_range=x_range
)