提供输入后,bokeh不会绘制我的图表

时间:2019-03-24 15:50:05

标签: python bokeh

看到Bokeh的功能后,我开始使用它。现在,我试图用我的数据集制作一个Vbar。

我的数据集(10行)

dataset

我已经阅读了很多次教程,并使用了官方文档中提供的示例:

https://hub.mybinder.org/user/bokeh-bokeh-notebooks-ate6xt0k/notebooks/tutorial/07%20-%20Bar%20and%20Categorical%20Data%20Plots.ipynb

from bokeh.models import ColumnDataSource
from bokeh.palettes import Spectral6

fruits = ['Apples', 'Pears', 'Nectarines', 'Plums', 'Grapes', 'Strawberries']
counts = [5, 3, 4, 2, 4, 6]

source = ColumnDataSource(data=dict(fruits=fruits, counts=counts, color=Spectral6))

p = figure(x_range=fruits, plot_height=250, y_range=(0, 9), title="Fruit Counts")
p.vbar(x='fruits', top='counts', width=0.9, color='color', legend="fruits", source=source)

p.xgrid.grid_line_color = None
p.legend.orientation = "horizontal"
p.legend.location = "top_center"

show(p)

我尝试使用自己的数据集进行复制。

from bokeh.models import ColumnDataSource
from bokeh.palettes import Spectral6


source = ColumnDataSource(top_ten_start)

p = figure(x_range='Bank_name', plot_height=250, y_range=(0, 90), title="BAnks")
p.vbar(x='Bank_name', top='Tier_1_ratio', width=0.9, legend="test", source=source)

p.xgrid.grid_line_color = None
p.legend.orientation = "horizontal"
p.legend.location = "top_center"

show(p)

我希望看到本教程中显示的条形图,但没有任何内容。 我认为通过替换“ x_range”,“ plot”和“ x”的输入就足够了。 也许以下信息会有所帮助:

这些是dtypes

Country_code     object
Bank_name        object
Tier_1_ratio    float64
dtype: object

1 个答案:

答案 0 :(得分:0)

x_range需要一个分类值列表,但是您提供了一个字符串。如果这是一个字形并且您使用的是源代码,则可以,但是这不是字形。我将此变量更改为source.data ['Bank_name'],因此它使用了ColumnDataSource中的银行名称。

from bokeh.models import ColumnDataSource
from bokeh.plotting import figure, show
from bokeh.palettes import Spectral7
import pandas as pd

top_ten_start = pd.read_csv('top_ten_start.csv')
top_ten_start['color'] = Spectral7

source = ColumnDataSource(top_ten_start)

p = figure(x_range=source.data['Bank_name'], plot_height=750, y_range=(0, 90), title="Banks")
p.vbar(x='Bank_name', top='Tier_1_ratio', width=0.9, legend='Bank_name', source=source, color='color')

p.xgrid.grid_line_color = None
p.xaxis.major_label_orientation = 45

show(p)

Output