我在Ubuntu 14.04上使用Python 2.7和Bokeh 0.12.4。我有一个像这样的数据框:
msrp price
compact 1.0 1.0
sedan 2.0 3.0
suv 3.0 5.0
sport 4.0 7.0
这样做:
import pandas as pd
from bokeh.charts import Histogram, output_file, show
s = pd.Series([1,2,3,4], index=['compact', 'sedan', 'suv', 'sport'], dtype='float64')
s2 = pd.Series([1,3,5,7], index=['compact', 'sedan', 'suv', 'sport'], dtype='float64')
df = pd.DataFrame({'msrp': s, 'price': s2})
output_file('test.html')
p = Histogram(df['msrp'], title='Test')
show(p)
当我运行它时,我收到以下错误:
ValueError: expected an element of either Column(Float), Column(Int), Column(String), Column(Date), Column(Datetime) or Column(Bool), got 0 2
dtype: int64
这令人费解,因为当我查看msrp系列时,我得到了:
>>> df['msrp']
compact 1.0
sedan 2.0
suv 3.0
sport 4.0
Name: msrp, dtype: float64
请注意,dtype读取为Float。我究竟做错了什么?我应该注意所有其他图表类型都能正常工作。
更新 文档上的示例也不起作用:
from bokeh.sampledata.autompg import autompg as df
p = Histogram(df['hp'], title='Test')
同样的错误。这是一个已知的问题?如果是这样,应该更新文档......
更新
我在Macbook上没遇到这个问题。只有Ubuntu。 Bokeh和Linux之间是否存在兼容性问题?我对Bokeh 0.12.4,0.12.3和0.11.0有这个问题。
答案 0 :(得分:0)
不推荐使用旧的bokeh.charts
API,包括Histogram
,随后将其删除。要使用Bokeh创建直方图,应使用bokeh.plotting
API。可以使用多种方法,这是一个使用Bokeh 0.13创建的完整示例:
import numpy as np
from bokeh.plotting import figure, show
measured = np.random.normal(0, 0.5, 1000)
hist, edge = np.histogram(measured, density=True, bins=50)
p = figure()
p.quad(top=hist, bottom=0, left=edge[:-1], right=edge[1:], line_color="white")
show(p)