2016-06-09 24 views
5

Saniyede grafik başına bir yeni nokta ile güncellenen iki çizgi grafiğin bulunduğu bir görselleştirme oluşturmak istiyorum. Sonuç, this gibi bir şey olacaktır.İki çizgi grafiğini kullanarak bokeh akışı

Son zamanlarda bokeh hakkında okudum ve gerçek zamanlı olarak veri akışlarının görselleştirilmesinde kullanılabileceğini öğrendim. Ancak henüz nasıl kod yazılacağını bilmiyorum.

Birisi bana bu görevin bokeh kullanılarak nasıl yapılacağını gösterebilirse memnun olurum. Teşekkürler! bokeh-0.11.1 için

cevap

11

:

Temel olarak, bokeh sunucusunda size piton uygulamasını çalıştırmanız gerekir. Daha sonra herkes sunucuya bağlanabilir ve grafiği gerçek zamanlı olarak görüntüleyebilir.

İlk önce, programınızı yazın. örneğin bu kodu kullanın:

# myplot.py 
from bokeh.plotting import figure, curdoc 
from bokeh.driving import linear 
import random 

p = figure(plot_width=400, plot_height=400) 
r1 = p.line([], [], color="firebrick", line_width=2) 
r2 = p.line([], [], color="navy", line_width=2) 

ds1 = r1.data_source 
ds2 = r2.data_source 

@linear() 
def update(step): 
    ds1.data['x'].append(step) 
    ds1.data['y'].append(random.randint(0,100)) 
    ds2.data['x'].append(step) 
    ds2.data['y'].append(random.randint(0,100)) 
    ds1.trigger('data', ds1.data, ds1.data) 
    ds2.trigger('data', ds2.data, ds2.data) 

curdoc().add_root(p) 

# Add a periodic callback to be run every 500 milliseconds 
curdoc().add_periodic_callback(update, 500) 

Sonra program ile, komut satırından sunucuyu çalıştırın:

C:\>bokeh serve --show myplot.py 

Bu gerçek zamanlı grafik ile tarayıcı açılır.

Tüm ayrıntılar için bokeh server documentation'a bakın.

+4

Oldukça geniş teknik nedenlerden dolayı, ".data" özniteliğinin tamamını "bir kerede" güncelleyebilmeniz genellikle tercih edilir; yani, ds.data = new_data'. Ayrıca bu şekilde yaparsanız, 'tetikleyici' çağrıları gerekli değildir, Bokeh sunucusu tüm özelliklerde otomatik olarak değişiklikler toplayacaktır. – bigreddot

+0

Tüm veri kümesini sıkıştırmak yerine sadece son X noktalarını göstermek nasıl mümkün olabilir? –

+0

'.stream 'noktaları düşürmeden önce en fazla kaç nokta tutulacağını belirten bir' rollover' parametresini kabul eder. – bigreddot

4

Sen arsa rakam beyanına aşağıdaki ekleyerek grafiğe kaydırmayı ekleyebilirsiniz:

p = figure(plot_width=400, plot_height=400) 
p.x_range.follow="end" 
p.x_range.follow_interval = 20 
p.x_range.range_padding=0 

nerede follow_interval = o kaydırma başlamadan önce grafik üzerinde birikebilir puan sayısı. Görünür aralığı grafik üzerinde de ayarlayabileceğine inanıyorum. FYI Kaydırma kodunu bokeh GitHub sayfasındaki OHLC örneğinden aldım. Burada bulunan: https://github.com/bokeh/bokeh/tree/master/examples/app OHLC, aktarılan verilerden bahsettiğimiz "... = new_data" tekniğini kullanan bir veri örneğidir.

+0

Yukarıdaki cevaba hoş bir ek. – Tommy

İlgili konular