私は、ボークプロットでvbarメソッドを使用してバープロットを描画したいと考えています。ここで、x軸は数値ではなくカテゴリ値をとります。チュートリアルページ(http://bokeh.pydata.org/en/latest/docs/reference/plotting.html#)で提供されている例は、数値のx軸だけです。Bokehプロットモジュールでvbarメソッドを使用してカテゴリバープロットを描画する方法
バープロットはウィジェットを介して更新可能でなければならないので、Bar()は使用できないようですが、ソースデータをフィードできるvbar()メソッドを使用しようとしました。
私は歴史からいくつかの同様の質問と回答を見つけましたが、それでも私の問題を正確には解決していないようです。
私は、次のコードスニペットを試してみましたが、それはいくつかのエラーで失敗しました:
from bokeh.plotting import figure, output_file
from bokeh.io import show
from bokeh.models import ColumnDataSource, ranges
from bokeh.plotting import figure
import pandas as pd
output_file("test_bar_plot.html")
dat = pd.DataFrame([['A',20],['B',20],['C',30]], columns=['category','amount'])
source = ColumnDataSource(dict(x=[],y=[]))
x_label = "Category"
y_label = "Amount"
title = "Test bar plot"
plot = figure(plot_width=600, plot_height=300,
x_axis_label = x_label,
y_axis_label = y_label,
title=title
)
plot.vbar(source=source,x='x',top='y',bottom=0,width=0.3)
def update():
source.data = dict(
x = dat.category,
y = dat.amount
)
plot.x_range = source.data['x']
update()
show(plot)
私がフィギュア()の引数としてx_rangeを指定した場合に動作するようだが、私がやりたいことをできるようにすることですウィジェットの状態に応じてカテゴリ値を更新します。この場合、x_rangeをオンザフライで変更できるメカニズムが必要です。
私に修正をお願いします。
は、プロットを作成するとき、あなたはプロットがそれのx_rangeのための要因を取ることを定義する必要があなたに
ありがとうございます。エラーはなくなりましたが、結果はx軸が 'A'、 'B'、 'C'ではなく数値(1,2,3)を取ります。 – Royalblue
@Royalblue私の新しい編集の回答を見てください。それはあなたの問題を完全に解決するはずです。 – DuCorey
ありがとうございます。今はとてもうまくいく! – Royalblue