前提・実現したいこと
Bokehで散布図をプロットしようとするとエラーが出ます。
エラー文を見るとsourceを使うならsource内の列名を書けと書かれているが書いているのでそこは問題ないと思うのですが、何が原因かわかりません。
よろしくお願いします。
発生している問題・エラーメッセージ
RuntimeError: Expected line_color and fill_color to reference fields in the supplied data source. When a 'source' argument is passed to a glyph method, values that are sequences (like lists or arrays) must come from references to data columns in the source. For instance, as an example: source = ColumnDataSource(data=dict(x=a_list, y=an_array)) p.circle(x='x', y='y', source=source, ...) # pass column names and a source Alternatively, *all* data sequences may be provided as literals as long as a source is *not* provided: p.circle(x=a_list, y=an_array, ...) # pass actual sequences and no source
該当のソースコード
from bokeh.io import output_notebook, show from bokeh.plotting import figure, ColumnDataSource, output_file, reset_output output_notebook() # データ生成 x = merge_df['PER'] y = merge_df['取引値'] label = merge_df['テーマ'] # オリジナル辞書を定義 source = ColumnDataSource(data=dict( x=x, y=y, theme=label )) # tooltips設定 TOOLTIPS = [ ("PER", "$x"), ("PRICE", "$y"), ("THEME", "@theme"), ] # グラフ全体の設定 p = figure( title="Market Capitalization", plot_width=600, plot_height=400, x_axis_label='PER', y_axis_label='取引値', tooltips=TOOLTIPS ) # 色設定 #color_codeとthemeで辞書を作る colormap = dict(zip(theme, color_code[:-1])) colors = [colormap[x] for x in merge_df['テーマ']] # 描画 p.circle( x='x', y='y', color=colors, fill_alpha=0.5, size=10, source=source ) # 出力 output_file("Market Capitalization.html") show(p)
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
あなたの回答
tips
プレビュー