散景图中的“ BAD_COLUMN_NAME”消息

时间:2018-09-10 13:52:31

标签: bokeh

我正在尝试从csv文件创建一个简单的散景图(垂直或垂直),似乎出现了问题。我可以通过手动列出项目来使用ColumnDataSource创建图表,但是当我尝试从简单的csv文件创建相同的图表时,似乎给我带来了麻烦。现在,我尝试通过读取pandas df创建人物。我收到了可怕的错误的列名错误消息。任何帮助表示赞赏。第一次发布,因此请让我知道我是否发布错误,并且会解决。提前致谢。

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 11.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',...)] < / p>

1 个答案:

答案 0 :(得分:0)

您正在告诉Bokeh,栏的顶部应由名为“ 2016”的列驱动:

QAbstractItemModel

但是您的数据框/列数据源没有这样的列。您需要配置条形字形以使用实际上是数据一部分的列(大概是 “总长度”或“测量长度”)