2016-06-01 77 views
3

我有一個分類數據文件,例如一百個國家和他們的人口。我用它通過使用散景在jupyter筆記本上繪製條形圖。 現在我需要,乍一看,只顯示前十個城市。當我使用平底鍋或車輪縮放工具時,我可以看到其他城市的酒吧。如何使用散景最初顯示部分圖表的分類軸?

當使用連續/數字軸時,我發現很容易做到。也許是因爲散景知道連續/數值軸背後的邏輯,但不是分類數據。

現在我只是用一個小例子來展示我所嘗試的。我試圖限制範疇y_range

from bokeh.plotting import figure, show, output_notebook 

factors = ["a", "b", "c", "d", "e", "f", "g", "h"] 
x = [50, 40, 65, 10, 25, 37, 80, 60] 

p1 = figure(title="Dot Plot", tools="pan,reset", y_range=factors, x_range=[0,60]) 
p1.circle(x, factors, size=10, fill_color="orange", line_color="green", line_width=3,) 
output_notebook() 
show(p1); 

你可以看到max(x)是80,x_range被限制爲[0,60]

當將圖表平移到右側時,我們可以看到2 x(等於65和80)看起來不錯。

然而,當我如下限制y_range;

p1 = figure(title="Dot Plot", tools="pan,reset", y_range=factors[0:4], x_range=[0,60]) 

它似乎不錯: categorical_axis_limit

但平移的時候,我發現幾個點在一條水平線上下來的,沒有對應的y值。 categorical_axis_limit_pan

任何想法都是值得歡迎的。非常感謝你。 由於這是我第一次提問,請告訴我,如果有什麼不妥。


我在https://gitter.im/bokeh/bokeh問這個問題,並在下面得到答案。如果你遇到同樣的問題,我們一起等待。非常感謝散景的開發者。 gitter Q&A

回答

0

如果你仍然有興趣,我管理使用滑塊控件做一個變通方法:

from bokeh.models import ColumnDataSource 
from bokeh.models.widgets import Slider 
from bokeh.io import show 
from bokeh.plotting import Figure, vplot, curdoc 
from bokeh.models.layouts import VBox 

factors = ["a", "b", "c", "d", "e", "f", "g", "h"] 
x = [50, 40, 65, 10, 25, 37, 80, 60] 

source = ColumnDataSource(data=dict(x=x[0:4],y=factors[0:4])) 

p1 = Figure(title="Dot Plot", tools="pan,reset", y_range=factors[0:4], x_range=[0,100]) 
p1.circle(x='x', y='y', source=source, fill_color="orange", size=100, line_color="green", line_width=3) 
slider = Slider(title='Scroll',start=0,value=0,end=len(factors)-4,step=1) 

def update(attrname,old,new): 
    source.data = dict(x=x[0+slider.value:4+slider.value],y=factors[0+slider.value:4+slider.value]) 
    print(source.data) 
    p1.y_range.factors = factors[0+slider.value:4+slider.value] 

slider.on_change('value',update) 

p = VBox(p1,slider,width=p1.plot_width) 

curdoc().add_root(p) 

show(p) 

它基本上是通過你的數據滾動。不幸的是,現在有一個問題,如果邊緣的字形太小,它們將被隱藏起來,但增加它們的大小是一個快速修復。此外,這可悲的不適用於縮放,但我相信它可以很容易地在另一個滑塊上添加「縮放」,並讓它修改您想要顯示的範圍的變量(我剛剛使用了4)。

+0

嗨!我試過了代碼,但它似乎無法解決我的問題。因爲你最初隱藏的其他因素不在他們應該在的地方。當我使用平移工具時,我仍然無法找到它們。謝謝你們一樣。 –