我有一个带有bokeh的代码。有两个数学函数,其中两个函数之间的间隔为[0,2]。如何用颜色填充该区域?我不能使用多边形,因为它不是多边形。 这是代码:
import numpy as np
from bokeh.plotting import *
N = 300
x0 = np.linspace(-1, 4, N)
x1 = np.linspace(0, 4, N)
y0 = 0.5 * (x0 ** 2)
y1 = np.sqrt(2 * x1)
y2 = -y1
# output to static HTML file
output_file('plotting_areas.html')
TOOLS = 'pan, wheel_zoom, box_zoom, reset,save, box_select, lasso_select'
p = figure(tools=TOOLS, width=350, height=350,
title=None, x_range=(-1, 5), y_range=(-5, 5))
p.line(x0, y0)
p.line(x1, y1)
p.line(x1, y2)
show(p)
谢谢
答案 0 :(得分:1)
Bokeh内置没有任何功能,例如洪水,这确实是需要的。最好的选择是自己计算该区域的多边形近似值。
否则,您可以(原则上)创建一个自定义扩展以在JavaScript中执行泛洪填充,但是我不确定会花费多少精力。
答案 1 :(得分:1)
好的,我已经找到了散景的解决方案,它非常简单而且可行。关键是用OX间隔之间的每两个数学函数的图像制作两个向量(数组)。对于每个向量,制作一个带有补丁散景指令的多边形,不带边界线。 这是代码:
import numpy as np
from bokeh.plotting import *
N = 300
x0 = np.linspace(-1, 4, N)
x1 = np.linspace(0, 4, N)
y0 = 0.5 * (x0 ** 2)
y1 = np.sqrt(2 * x1)
y2 = -y1
def f1(x):
return 0.5 * (x**2)
def f2(x):
return np.sqrt(2 * x)
z = np.zeros(N)
w = np.zeros(N)
x = np.linspace(0, 2, N)
for i in np.arange(len(x)):
z[i] = f1(x[i])
w[i] = f2(x[i])
# output to static HTML file
output_file('plotting_areas.html')
TOOLS = 'pan, wheel_zoom, box_zoom, reset,save, box_select, lasso_select'
p = figure(tools=TOOLS, width=350, height=350,
title=None, x_range=(-1, 5), y_range=(-5, 5))
p.line(x0, y0)
p.line(x1, y1)
p.line(x1, y2)
p.patch(x, z, color='red')
p.patch(x, w, color='red')
show(p)
这是具有最佳解决方案的图像:
谢谢