我一直在尝试使用Bokeh(v0.8.1)创建一个包含许多(~1000s)箱形图的地块。我注意到每当我尝试使用bokeh.charts.BoxPlot函数时,我都会遇到一个包含超过6个箱图的错误。
import numpy as np
from bokeh.charts import BoxPlot
test = {}
for i in range(0,7):
test[str(i)] = np.random.normal(0,1,100)
plot = BoxPlot(test)
show(plot)
堆栈跟踪:
ipython-input-321-6a3614410bf5> in <module>()
4 for i in range(0,7):
5 test[str(i)] = np.random.normal(0,1,100)
----> 6 plot = BoxPlot(test)
7 show(plot)
/opt/pkg/python27/lib/python2.7/site-packages/bokeh/charts/builder/boxplot_builder.pyc in BoxPlot(values, marker, outliers, xscale, yscale, xgrid, ygrid, **kw)
79 return create_and_build(
80 BoxPlotBuilder, values, marker=marker, outliers=outliers,
---> 81 xscale=xscale, yscale=yscale, xgrid=xgrid, ygrid=ygrid, **kw
82 )
83
/opt/pkg/python27/lib/python2.7/site-packages/bokeh/charts/_builder.pyc in create_and_build(builder_class, values, **kws)
38 chart_kws = { k:v for k,v in kws.items() if k not in builder_props}
39 chart = Chart(**chart_kws)
---> 40 chart.add_builder(builder)
41
42 return chart
/opt/pkg/python27/lib/python2.7/site-packages/bokeh/charts/_chart.pyc in add_builder(self, builder)
113 def add_builder(self, builder):
114 self._builders.append(builder)
--> 115 builder.create(self)
116
117 # Add tools if supposed to
/opt/pkg/python27/lib/python2.7/site-packages/bokeh/charts/_builder.pyc in create(self, chart)
161 def create(self, chart=None):
162 self._adapt_values()
--> 163 self._process_data()
164 self._set_sources()
165 renderers = self._yield_renderers()
/opt/pkg/python27/lib/python2.7/site-packages/bokeh/charts/builder/boxplot_builder.pyc in _process_data(self)
185 out_x.append(level)
186 out_y.append(o)
--> 187 out_color.append(self.palette[i])
188
189 # Store
IndexError: list index out of range
似乎BoxPlot函数的任何预定义颜色列表都没有用于新的箱图的颜色。
有没有办法定义一个新的颜色列表(理想情况下,如果它用完就会简单地重复颜色的循环)或完全禁用着色?
答案 0 :(得分:0)
循环颜色实现以在bokeh上重复颜色。最近的版本中添加了图表(IIRC 0.8)。这似乎是个错误。 Stack Overflow实际上不是讨论和跟踪问题的最佳场所。
我在图表上打开了与cycle_colors / palette错误相关的问题,其中还包含可用于绕过问题的快捷方式。你可以看到它here。基本上你可以明确地构建并传递你自己足够大的调色板。如果您想提供帮助或提供其他反馈,请使用相关的GH问题,主要是因为我们更容易跟踪。
谢谢!