我正在使用VisPy
绘制曲面,但函数scene.visuals.SurfacePlot
只有参数color
,没有参数colormap
。有没有人知道如何在表面绘图中使用colormap
?如何在VisPy surfaceplot中使用colormap
0
A
回答
1
目前,看起来有bug这是保持SurfacePlot的colors
参数不起作用。除了纯色以外,任何表面都可能不得不走上这条路。因此,目前可能无法修改源代码。
对于它的价值,我相信如果这个错误是不存在以下将工作:
import vispy.plot as vp
from vispy import color
fig = vp.Fig(show=False)
cnorm = z/abs(np.amax(z))
colors = color.get_colormap("hsl").map(cnorm).reshape(z.shape + (-1,))
fig[0, 0].surface(z, x=x, y=y, colors=colors)
基本上,数据标准化为0和1之间,然后映射这些值到色彩表。这将返回一个RGB颜色的三维数组,您可以将其传递给SurfacePlot的colors
参数。
2
必须在每个顶点基础上设置颜色,即vertex_colors。一种可以实现的方式如下:
import vispy.plot as vp
from vispy import color
from vispy.util.filter import gaussian_filter
import numpy as np
z = np.random.normal(size=(250, 250), scale=200)
z[100, 100] += 50000
z = gaussian_filter(z, (10, 10))
fig = vp.Fig(show=False)
cnorm = z/abs(np.amax(z))
c = color.get_colormap("hsl").map(cnorm).reshape(z.shape + (-1,))
c = c.flatten().tolist()
c=list(map(lambda x,y,z,w:(x,y,z,w), c[0::4],c[1::4],c[2::4],c[3::4]))
#p1 = fig[0, 0].surface(z, vertex_colors=c) # why doesn't vertex_colors=c work?
p1 = fig[0, 0].surface(z)
p1.mesh_data.set_vertex_colors(c) # but explicitly setting vertex colors does work?
fig.show()
注意使用显式设置set_vertex_colors工作正常。不幸的是(错误可能)通过c
到surface(z, vertex_colors=c)
运行没有错误,但没有改变每个顶点的颜色。结论:使用明确的set_vertex_colors
。
相关问题
- 1. 如何在GUI中使用matplotlib的colormap?
- 2. 如何在PyQt中嵌入vispy图表?
- 3. 如何在C++中使用colormap(调色板)保存tif
- 4. 使用vispy以灰度显示图像
- 5. Python Colormap
- 6. 试图在3D中使用Vispy旋转四边形
- 7. 在Vispy中使用视觉效果与gloo着色器程序
- 8. Colormap在NetworkX中不起作用
- 9. 如何在PyQt5框架中嵌入vispy canvas
- 10. 使用colormap和matplotlib循环器
- 11. 如何使用matplotlib的colormap将数字映射到颜色?
- 12. ColorMap values WPF
- 13. iPhone Core Graphics中的ColorMap?
- 14. Matlab colormap line plot
- 15. 如何运行javascript colormap示例?
- 16. 如何在Matlab中高效地更改大.fig文件的Colormap?
- 17. contourf,colormap,colorbar在matlab中创建渐变
- 18. python matplotlib使用colormap更改contourf图中指定值的颜色
- 19. seaborn color_palette as matplotlib colormap
- 20. 表面图colormap python
- 21. matplotlib imshow绘制不同如果使用colormap或RGB数组
- 22. colormap与所有RGB组合
- 23. 如何解码matplotlib的Colormap中的颜色映射?
- 24. 如何覆盖gnuplot中colormap上的等高线图?
- 25. 绘制三维隐式与vispy
- 26. 添加环境光到vispy场景
- 27. colormap的大小(灰色)
- 28. Colormap 2D for a scalar - Matlab
- 29. 可以在vispy gloo中绘制多个对象吗?
- 30. Matlab colormap对称约1
我试过这种方法,但我得到了一个错误,说'颜色必须是二维的,如果索引是无'您是否应该将此脚本添加到我的代码?这是我的代码:'fig = vp.Fig(show = False) cnorm = z/abs(amax(z)) colors = color.get_colormap(“cool”)。map(cnorm).reshape(z.shape +(-1)) p1 = scene.visuals.SurfacePlot(z = solver0(I,f,c,bc,Lx,Ly,nx,ny,dt,0,user_action = None),阴影='平滑' ,颜色=颜色)' –
没错。你遇到了我提到的错误。该文件说,颜色数组必须是2D,但代码要求它是3D。但是,如果将数组平铺为2D,则会遇到一个错误,它会尝试访问尚未初始化的底层结构。所以,就像我说的。你可能不得不等待它被修复,或者自己修复它。您可以尝试vispy.scene中的Volume对象,该对象采用cmap参数 – orodbhen
好。非常感谢,我会试试:) –