叠加静态散景图

Superimposing static bokeh graphs

我正在尝试叠加散景图。

这个在上面: http://docs.bokeh.org/en/latest/docs/gallery/image_rgba.html

下面这个: http://docs.bokeh.org/en/latest/docs/gallery/stocks.html

反之亦然。

我正在将 x 轴更改为日期时间以适合股票图。但到目前为止,这绘制了一张空白图表。有什么建议吗?

import numpy as np
import arrow
import pandas as pd
import pandas.io.data as web
#from pandas_data_reader import data as web
from pandas import DataFrame, Series

from bokeh.io import output_notebook
output_notebook()
from bokeh.plotting import figure, show, output_file, gridplot

p1 = figure(x_axis_type = "datetime", responsive=True)


N = 100
M = 100
img = np.empty((N,M), dtype=np.uint32)
view = img.view(dtype=np.uint8).reshape((N, M, 4))
for i in range(N):
    for j in range(M):
            view[i, j, 0] = 0  #red
            view[i, j, 1] = int(i/N*160)  #green
            view[i, j, 2] = int(j/N*255)  #blue
            view[i, j, 3] = int(i/N*255)  #alpha

p1 = figure(x_range=['10/1/2015','11/1/2015'], y_range=[0,200]) #changes the view window

all_data = {} 
for ticker in ['AAPL', 'IBM', 'MSFT', 'GOOG']:
    all_data[ticker] = web.get_data_google(ticker, '10/1/2015', '11/1/2015')
AAPL = Series(all_data['AAPL']['Close'])
GOOG = Series(all_data['GOOG']['Close'])
MSFT = Series(all_data['MSFT']['Close'])
IBM = Series(all_data['IBM']['Close'])
p1.line(AAPL.index, AAPL, color='#A6CEE3', legend='Apple')
p1.line(IBM.index, IBM, color='#0022CC', legend='IBM')
p1.line(MSFT.index, MSFT, color='#3322DD', legend='MICROSOFT')

p1.title = "Superimposed info"

p1.image_rgba(image=[img], x=['10/1/2015'], y=[10], dw=['10/15/2015'], dh=[10]) 
p = gridplot([[p1]], toolbar_location=None, min_border=0, h_symmetry=True)
show(p)

你说的叠加是什么意思?

如果这里的情况是我与您提供的大部分代码一起使用的片段,我只是更改了获取数据的调用,因为我在代理后面,无法获取它;):

from __future__ import division
import pandas as pd
import numpy as np
from pandas import Series
from bokeh.plotting import figure, show, output_file

N = 100
img = np.empty((N,N), dtype=np.uint32)
view = img.view(dtype=np.uint8).reshape((N, N, 4))
for i in range(N):
    for j in range(N):
        view[i, j, 0] = int(i/N*255)
        view[i, j, 1] = 158
        view[i, j, 2] = int(j/N*255)
        view[i, j, 3] = 255

output_file("image_rgba.html", title="image_rgba.py example")

print img.shape
p = figure(x_range=[0,20], y_range=[0,160])
p.image_rgba(image=[img], x=[0], y=[0], dw=[20], dh=[160])


all_data = {}
for ticker in ['AAPL', 'IBM', 'MSFT', 'GOOG']:
    # all_data[ticker] = web.get_data_google(ticker, '10/1/2015', '11/1/2015')
    path = 'C:/Users/myuser/Downloads/' + ticker.lower() + '.csv'
    all_data[ticker] = pd.read_csv(path)

AAPL = Series(all_data['AAPL']['Close'])
GOOG = Series(all_data['GOOG']['Close'])
MSFT = Series(all_data['MSFT']['Close'])
IBM = Series(all_data['IBM']['Close'])

p.line(AAPL.index, AAPL, color='#A6CEE3', legend='Apple')
p.line(IBM.index, IBM, color='#0022CC', legend='IBM')
p.line(MSFT.index, MSFT, color='#3322DD', legend='MICROSOFT')

show(p)  # open a browser

编辑:p = figure(x_range=[0, 20], y_range=[0, 160], x_axis_type="datetime") 会将 x_axis 更改为日期时间对象,但您的数据索引是整数,因此 1 到 20 将显示为自纪元以来的秒数,请参阅此 issue :我认为您目前无法将斧头显示为 dd/mm/yyyy 或任何您想要的格式。