我早些时候在谷歌小组上提出了这个问题link并且通过Sarah Bird提供的有用答案了解了很多,只是为了在这里发布答案,对于遇到类似问题的人。那时我正在使用bokeh 0.9.2。
我试图为一批商业租赁建立一个气泡图,其中包括:
我的尝试:
import pandas as pd
import numpy as np
from bokeh.io import output_notebook, show, output_file
from bokeh.plotting import figure, ColumnDataSource
from datetime import datetime
output_notebook()
PATH = ''
filename = 'test_RR.xlsx'
df = pd.read_excel(PATH + filename)
df['TA_END'] = np.where(pd.isnull(df['ET Date']), df.L_END, np.where(df['ET Date'] < df.L_END, df['ET Date'], df.L_END)) # just some data cleaning, don't bother with this
GFA_SCALE_FACTOR = 2
df['GFA_radius'] = np.sqrt( df.GFA / np.pi ) * GFA_SCALE_FACTOR
import seaborn as sns
colors = list(sns.cubehelix_palette(28, start=.5, rot=-.75))
hex_colors = np.array(['#%02x%02x%02x' % (c[0]*255, c[1]*255, c[2]*255) for c in colors])
df['color'] = hex_colors[df.FL - 4]
我在尝试时发生错误:
source = ColumnDataSource(df)
p = figure(x_axis_type="datetime", width = 800, height = 400)
p.circle(x='TA_END', y='Eff Rent',
size= 'GFA_radius',
fill_alpha=0.8, line_width=0.5, line_alpha=0.5, color = 'color', source = source)
show(p)
错误消息让我觉得datetime序列化的方式有问题:
ValueError: month must be in 1..12
我将在答案中张贴莎拉的答案。
答案 0 :(得分:0)
问题是,实际上是因为&#34; ET日期&#34;列中的NaN值。 DataFrame&#34; df&#34;虽然与情节无关,但导致散景序列化失败。
所以,如果我这样做:
{{2一切都会成功。一个好的提示始终只是从你需要的列中创建一个ColumnDataSource,因为这样你就会消耗更多的数据/处理能力。 浏览器比你需要的 - 也来自Sarah。
但是,我希望散景可以处理一些NaN数据,因为有些情节可能想要偶尔显示一个空位。