我正在尝试使用Bokeh填充两行之间。我的两个数据集包含NaN的部分。修补程序正确呈现最后一段数据,但在任何NaN块之前的部分都失败了。以下示例说明了问题:
from bokeh.plotting import figure, output_file, show
import numpy as np
p = figure(plot_width=400, plot_height=300)
mx = np.array(np.random.randint(20, 25, 30), dtype=float)
mx[7:11] = np.nan
mx[19:23] = np.nan
mn = mx-10
x = np.arange(0, len(mn))
wX = np.append(x, x[::-1])
wY = np.append(mx, mn[::-1])
p.patch(wX, wY)
show(p)
这产生了下图:
我希望前两个平行线部分用填充绘制,因为最后一部分是绘图。相反,这些部分似乎只是将补丁应用于线段本身。我有一个解决方案,通过循环遍历每个连续的数据部分来创建单独的补丁,但它在100多个补丁上太慢了。
答案 0 :(得分:0)
据我所知,Bokeh会正确呈现您提供的补丁。请记住,通过NaN分离单个补丁。这使你传递多个连续的NaN有点奇怪,它不会添加任何东西。指定有效的X坐标和NaN Y坐标也有点令人困惑。
Just as with line() and multi_line(), NaN values can be passed to patch() and patches() glyphs. In this case, you end up with single logical patch objects, that have multiple disjoint components when rendered
http://bokeh.pydata.org/en/latest/docs/user_guide/plotting.html#id1
我已将x,y坐标添加到运行代码时获得的第一个补丁中。也许你想要一些不同的东西,但是Bokeh正在渲染,你指定的是正确的。