Наложение графиков статического боке

Я пытаюсь наложить графики боке.

Этот сверху: http://docs.bokeh.org/en/latest/docs/gallery/image_rgba.html

и этот внизу: http://docs.bokeh.org/en/latest/docs/gallery/stocks.html

или наоборот.

Я меняю ось x на datetime, чтобы соответствовать графику запаса. Но пока это пустая диаграмма. Какие-либо предложения?

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)

person Back2Basics    schedule 14.11.2015    source источник


Ответы (1)


это то, что вы имеете в виду под наложением? введите описание изображения здесь

Если это так, то вот фрагмент, который я использовал с большей частью предоставленного вами кода, я просто изменил вызов, чтобы получить данные, поскольку я за прокси-сервером и не могу его получить;):

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

edit: p = figure(x_range=[0, 20], y_range=[0, 160], x_axis_type="datetime") изменит x_axis на объект datetime, но ваш индекс данных является целым числом, поэтому от 1 до 20 будут отображаться как количество секунд с начала эпохи и увидеть это issue: я думаю, вы не сможете отобразить топор как дд / мм / гггг или какой-либо другой формат, который вы хотите в данный момент.

person euri10    schedule 23.11.2015
comment
Да, это то, что я имею в виду под наложением. Я все еще не могу воссоздать то, что вы здесь сделали, но это ближе, так как я могу получить Image_rgba с легендой. Я перешел на Py27, чтобы соответствовать. Я предполагаю в ваших данных, что ваш индекс даты преобразован в метки времени эпохи. (0-20 секунд). Я нашел соответствующие акции, которые продавались в 1970-х годах. ('DIS' и 'DD' из web.get_data_yahoo ()). Я продолжу над этим работать. - person Back2Basics; 23.11.2015
comment
Данные csv поступают из google.com/finance/ извините, я не смог использовать ваш, поэтому я покопался в коде panda, чтобы узнать, по какому URL они достигли :) - person euri10; 23.11.2015