来自Bokeh情节的“BAD_COLUMN_NAME”消息

问题描述 投票:2回答:1

我试图从csv文件创建一个简单的散景图(vert或hor),似乎有问题。我可以通过手动列出项目来利用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 [renderer:GlyphRenderer(id ='107d32b5-2700-4608-b1d8-9d0602f82a5b',...)]错误:bokeh.core.validation.check:E-1001(BAD_COLUMN_NAME):字形指的是不存在的列名:2016 [renderer:GlyphRenderer(id ='4dcb960b-b29e-4998-972a-046311d037f8',...)]

bokeh
1个回答
0
投票

你告诉Bokeh,条形的顶部应该由名为“2016”的列驱动:

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

但是您的数据框/列数据源没有此类列。您需要配置条形图以使用实际上属于您的数据的列(可能是“总长度”或“调查的长度”)

© www.soinside.com 2019 - 2024. All rights reserved.