看到Bokeh的功能后,我开始使用它。现在,我试图用我的数据集制作一个Vbar。
我的数据集(10行)
我已经阅读了很多次教程,并使用了官方文档中提供的示例:
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
答案 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)