47202


# 環境

  * Python 3.6
  * bokeh 0.13.0

# やりたいこと

X軸の表示範囲を指定して、グラフ表示したいです。  
以下のコードで、やりたいことは実現できました。

[code]

    from bokeh.plotting import figure, output_file, show,output_notebook
    
    output_notebook()
    
    p = figure(title="simple line example", x_axis_label='x', y_axis_label='y')
    p.x_range = bokeh.models.Range1d(1,3)
    #p.x_range = bokeh.models.Range(1,3) # Error
    
    p.line([1, 2, 3, 4, 5], [6, 7, 2, 4, 5])
    
    show(p)
    
[/code]

# 質問

`bokeh.models.Range1d`のドキュメントには、以下のように記載されていました。

> In addition to supplying start and end keyword arguments to the Range1d
> initializer, you can also instantiate with the convenience syntax:  
>  Range(0, 10) # equivalent to Range(start=0, end=10)

<https://bokeh.pydata.org/en/latest/docs/reference/models/ranges.html#bokeh.models.ranges.Range1d>

`Range(0,10)`が使えるそうなので、以下のコードを実行したところエラーが発生しました。

[code]

    p.x_range = bokeh.models.Range(1,3) 
    # TypeError: __init__() takes 1 positional argument but 3 were given
    
[/code]

なぜ、エラーが発生したのでしょうか？


CC BY-SA 4.0
2018-08-02T16:22:29.667
47192
2018-08-03T02:38:06.843
19524
question
python bokeh
` bokeh.models.Range(1,3)`でインスタンス生成できないのは、何故ですか？


質問にあるドキュメントは、`Range(start=0, end=10)`を簡便に`Range(0,
10)`とできるとしか書いてありません。要するに`Range`から派生したクラスではそのように書けるということです。

Rangeは、抽象クラスなので実際には使えません。`bokeh.models.Range`のドキュメントには、以下のように記載されています。

> A base class for all range types.
>
> Note
>
> This is an abstract base class used to help organize the hierarchy of Bokeh
> model types. It is not useful to instantiate on its own.


CC BY-SA 4.0
2018-08-03T02:38:06.843
47202
2018-08-03T02:38:06.843
15171
47192
answer