Ниже приведены два набора кода. Первый набор кода работает и дает желаемый результат. Однако, когда я пытаюсь расширить размер кадра данных, как во втором наборе кода, с дополнительным столбцом, я получаю сообщение об ошибке.
Я получаю сообщение об ошибке ниже.
raise ValueError("Keyword argument sequences for broadcasting must all be the same lengths. Got lengths: %r" % sorted(list(lengths)))
ValueError: Keyword argument sequences for broadcasting must all be the same lengths. Got lengths: [3, 4]
raise ValueError("Keyword argument sequences for broadcasting must all be the same lengths. Got lengths: %r" % sorted(list(lengths)))
ValueError: Keyword argument sequences for broadcasting must all be the same lengths. Got lengths: [3, 4]
Код 1, который работает
import pandas as pd
from bokeh.models import ColumnDataSource
from bokeh.plotting import figure, show
from bokeh.palettes import Spectral3
df = pd.DataFrame({'Category': ['<£5000', '£100K to £250K'],
'01/01/2014': [8,1],
'01/01/2015': [8,2],
'01/01/2016': [7,1]})
grouped = df.groupby('Category')['01/01/2014', '01/01/2015', '01/01/2016'].mean().round(0)
source = ColumnDataSource(grouped)
countries = source.data['Category'].tolist()
p = figure(x_range=countries)
p.vbar_stack(stackers=['01/01/2014', '01/01/2015', '01/01/2016'],
x='Category', source=source,
legend = ['01/01/2014 ', '01/01/2015 ', '01/01/2016 '],
width=0.5, color=Spectral3)
p.title.text ='Average Number of Trades by Portfolio Size'
p.legend.location = 'top_right'
p.xaxis.axis_label = 'Portfolio Size'
p.xgrid.grid_line_color = None #remove the x grid lines
p.yaxis.axis_label = 'Average Number of Trades'
show(p)
Код 2, который не работает. Добавлена дополнительная дата.
import pandas as pd
from bokeh.models import ColumnDataSource
from bokeh.plotting import figure, show
from bokeh.palettes import Spectral3
df = pd.DataFrame({'Category': ['<£5000', '£100K to £250K'],
'01/01/2014': [8,1],
'01/01/2015': [8,2],
'01/01/2016': [7,1],
'01/01/2017': [9,4]})
grouped = df.groupby('Category')['01/01/2014', '01/01/2015', '01/01/2016', '01/01/2017'].mean().round(0)
source = ColumnDataSource(grouped)
countries = source.data['Category'].tolist()
p = figure(x_range=countries)
p.vbar_stack(stackers=['01/01/2014', '01/01/2015', '01/01/2016', '01/01/2017'],
x='Category', source=source,
legend = ['01/01/2014 ', '01/01/2015 ', '01/01/2016 ', '01/01/2017 '],
width=0.5, color=Spectral3)
p.title.text ='Average Number of Trades by Portfolio Size'
p.legend.location = 'top_right'
p.xaxis.axis_label = 'Portfolio Size'
p.xgrid.grid_line_color = None #remove the x grid lines
p.yaxis.axis_label = 'Average Number of Trades'
show(p)