我想用bokeh绘制三维曲面。我注意到我可以画像z= f(x,y)这样的曲面,但是我不能画参数曲面,比如f(x,y,z) = 0。其中后者可以是封闭的表面。谢谢你的帮助。下面是链接的例子。我在这里包括了我在示例中所做的更改,而不是整个代码。
# parametric torus as an example in which the equation for the surface can be rephrased to be like f(x,y,z) = 0
angle = np.linspace(0, 2. * np.pi, 30)
theta, phi = np.meshgrid(angle, angle)
r, R = .25, 1.
xx = (R + r * np.cos(phi)) * np.cos(theta)
yy = (R + r * np.cos(phi)) * np.sin(theta)
xx = xx.ravel()
yy = yy.ravel()
value = r * np.sin(phi)
value = value.ravel()
# here is the original example which draw a surface like Z = f(x,y)
"""
x = np.arange(0, 300, 10)
y = np.arange(0, 300, 10)
xx, yy = np.meshgrid(x, y)
xx = xx.ravel()
yy = yy.ravel()
value = np.sin(xx / 50) * np.cos(yy / 50) * 50 + 50
"""
source = ColumnDataSource(data=dict(x=xx, y=yy, z=value))
surface = Surface3d(x="x", y="y", z="z", data_source=source)
show(surface)发布于 2019-05-09 05:21:14
首先,必须明确说明: Bokeh没有任何内置的3d功能,3d绘图也不是项目的优先事项。您所链接的示例首先是一个如何扩展Bokeh以集成第三方JavaScript库的示例。偶然的是,库选择的例子是vis.js Graph3d库。这是一个相当简单的3d库,据我所知,参数曲面完全超出了它的能力。要渲染这类曲面,需要创建自己的新自定义Bokeh扩展,它封装了一个更复杂的3d JavaScript库(例如three.js、vtk.js等)。
https://stackoverflow.com/questions/56036958
复制相似问题