Сообщение "BAD_COLUMN_NAME" из сюжета Bokeh - PullRequest
0 голосов
/ 10 сентября 2018

Я пытаюсь создать простую диаграмму боке (vert или hor) из CSV-файла и, похоже, возникают проблемы.Я могу создать диаграмму, используя ColumnDataSource, перечислив элементы вручную, но когда я пытаюсь создать ту же диаграмму из простого файла CSV, это, кажется, доставляет мне проблемы.Теперь я пытаюсь просто создать фигуру, читая панд.Я получаю страшное сообщение об ошибке Bad Column Name.Любая помощь приветствуется.Первый раз, поэтому дайте мне знать, если я написал неправильно, и я исправлю.Заранее спасибо.

from bokeh.io import output_notebook, show
output_notebook()

from bokeh.core.properties import value
from bokeh.io import show, output_file
from bokeh.models import ColumnDataSource, 
HoverTool, FactorRange, Range1d
from bokeh.plotting import figure
from bokeh.transform import dodge

output_file("test.html")

import pandas as pd

df = pd.read_csv(r'C:\test.csv')

print(df)

Mains  Total Length  Length Surveyed

0 1,0 88,4 87,6 1 2,0 313,8 316,8 2 3,0 271,0 265,6 3 4,0 155,0 153,1 4 5,0 301,8 299,0 5 6,0 293,9 132,3 6 7,0 148,1 147,2 7 8,0 292,9 290,1 8 9,0 307,6 306,0 9 10,0 559,0 236,0 10,0 559,0 236,0 1011,0 448,8 441,5 11 12,0 297,9 13,0 12 13,0 172,2 67,5

source = ColumnDataSource(data=dict(df))
Mains = data=dict(df)
data = {'Mains': df}

p = figure(x_range=(0,20), y_range=(0, 500), 
    plot_height=250, title="CCTV Survey August 6- 
    9th, 
    2018",
    toolbar_location=None, tools="")

p.vbar(x=dodge('Mains', -0.25, range=p.x_range), 
    top='2015', width=0.2, source=source,
    color="#c9d9d3", legend=value("Total 
    Length"))

p.vbar(x=dodge('Mains',  0.0,  range=p.x_range), 
    top='2016', width=0.2, source=source,
    color="#718dbf", legend=value("Length 
    Surveyed"))

p.add_tools(HoverTool(tooltips=[("Total Length", 
    "@2015 ft"),("Length Surveyed", "@2016 
    ft")]))
p.xaxis.major_label_orientation = 1.4
##p.x_range.factors=data_dict['x']
##p.x_range.range_padding = 0.0
p.xgrid.grid_line_color = None
p.legend.location = "top_left"
p.legend.orientation = "horizontal"

show(p)

ОШИБКА: bokeh.core.validation.check: E-1001 (BAD_COLUMN_NAME): глиф ссылается на несуществующее имя столбца: 2015 [средство визуализации: GlyphRenderer (id = '107d32b5-2700-4608-b1d8-9d0602f82a5b', ...)] ОШИБКА: bokeh.core.validation.check: E-1001 (BAD_COLUMN_NAME): глиф ссылается на несуществующее имя столбца: 2016 [средство визуализации: GlyphRenderer (id)= '4dcb960b-b29e-4998-972a-046311d037f8', ...)]

1 Ответ

0 голосов
/ 10 сентября 2018

Вы говорите Bokeh, что верхняя часть столбцов должна управляться столбцом с именем «2016»:

top='2016', width=0.2, source=source,

Но у источника данных вашего фрейма данных / столбца такого столбца нет. Вам необходимо настроить глифы панели для использования столбцов, которые фактически являются частью ваших данных (предположительно «Общая длина» или «Обследованная длина»)

...