PyVista绘制股票蜡烛图时自定义柱体任意位置放置的实现问题
PyVista 自定义位置蜡烛图(K线图)实现问题
花了一天时间对照示例文档学习PyVista使用,目前仍处于入门阶段,卡在一个具体功能实现上迟迟无法解决。
选择PyVista的原因是它可以流畅承载大规模数据点的可视化渲染,我需要用它绘制适用于股票等场景的蜡烛图(K线图),目前无法实现上下端点可放置在图表网格任意位置的2D柱体,具体遇到的问题如下:
- 内置图表功能不支持柱体脱离0基线放置,无法自定义柱体的上下端点位置
- 尝试通过3D相关接口模拟2D柱体效果时,出现除零错误、柱体表面生成异常随机网格的问题,同时无法为3D场景添加正确的坐标刻度
已尝试的实现方案
目前已经试过三种实现路径,对应代码如下:
方案1:调用2D图表的.bar方法实现
import numpy as np import pyvista as pv x = [2] y = [5] chart = pv.Chart2D() chart.bar(x, y) chart.x_axis.tick_locations = x chart.grid = False # Disable the grid lines chart.show()
方案2:使用StructuredGrid(结构化网格)方法实现
import pyvista import vtk import numpy as np from numpy import mgrid import matplotlib.pyplot as plt vtkgrid = vtk.vtkStructuredGrid() grid = pyvista.StructuredGrid(vtkgrid) xrng = np.arange(-10, 10, 1, dtype=np.float32) yrng = np.arange(-10, 10, 1, dtype=np.float32) zrng = np.arange(-1, 0, 1, dtype=np.float32) x, y, z = np.meshgrid(xrng, yrng, zrng) grid = pyvista.StructuredGrid(x, y, z) p = pyvista.Plotter(notebook=0, shape=(1,1)) cmap = plt.cm.get_cmap("viridis", 4) p.background_color='white' p.add_mesh(grid, cmap=cmap) print(xrng) # grid = pv.StructuredGrid(x, y, z) p.show_grid() # grid.plot() p.show()
方案3:修改hexahedron(六面体)官方示例脚本
该方案可以生成平面方块,但无法为方块添加匹配的坐标网格尺度来绑定坐标点,无法实现精准坐标定位。
import numpy as np import pyvista as pv import numpy as np import vtk import pyvista as pv offset = np.array([0, 9]) cells = np.array([8, 0, 1, 2, 3, 4, 5, 6, 7, 8, 8, 9, 10, 11, 12, 13, 14, 15]) cell_type = np.array([vtk.VTK_HEXAHEDRON, vtk.VTK_HEXAHEDRON]) cell1 = np.array( [ [0, 0, 0], [0, 0, 0], [0, 1, 0], [0, 1, 0], [0, 0, 1], [0, 0, 1], [0, 1, 1], [0, 1, 1], ] ) cell2 = np.array( [ [0, 2, 3], [0, 2, 3], [0, 1, 3], [0, 1, 3], [0, 2, 4], [0, 2, 4], [0, 1, 4], [0, 1, 4], ] ) points = np.vstack((cell1, cell2)) grid = pv.UnstructuredGrid(offset, cells, cell_type, points) cells_hex = np.arange(16).reshape([2, 8]) grid = pv.UnstructuredGrid({vtk.VTK_HEXAHEDRON: cells_hex}, points) _ = grid.plot(show_edges=True)
核心问题
如何构建可绑定柱体坐标的参考网格,实现柱体在网格上的任意位置放置,求正确的实现方向指引。
内容的提问来源于stack exchange,提问作者thatoneguy
相关产品推荐
相关产品推荐

