如何使用散景初始显示图表的部分分类轴?

时间:2016-06-01 10:08:17

标签: bokeh

我有一个分类数据文件,例如一百个国家及其人口。我使用它通过使用散景在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上提出了这个问题,并在下面得到答案。如果你遇到同样的问题,让我们一起等。非常感谢bokeh的开发者。 gitter Q&A

1 个答案:

答案 0 :(得分:0)

如果您仍然感兴趣,我设法使用Slider小部件进行解决方法:

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)会很容易。 / p>

相关问题