You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

任意形状三维体积内的拉丁超立方采样适配及可视化优化问询

任意形状三维体积内的拉丁超立方采样适配及可视化优化问询

我有一组由XYZ坐标组成的数据集,可以渲染成3D柱状图,效果如下:

3D柱状图展示的数据集

我现在最核心的问题是:怎么在这个任意形状的体积内生成用户指定数量(记为X)的采样点,同时保证这些点能尽可能好地代表整个体积的特征?

我已经尝试过两种方法,但都遇到了瓶颈:

  • 一开始我想用拉丁超立方采样,但这方法从名字就能看出来,是针对立方体设计空间的,完全适配不了我这种任意形状的体积。
  • 之后我又尝试了一种针对n维椭球生成随机点的方法,本来盼着能调整一下适配任意形状,但折腾了半天也没成功。

另外还有个小困扰:我对3D直方图的展示方式不太满意,更想呈现一个“规整”的体积。试过用griddata,但它默认需要立方体基底,也不符合我的需求。


编辑补充
后来我成功把数据绘成了3D曲面,这个展示效果我觉得够用了,用到的代码如下:

import numpy as np
import matplotlib.pyplot as plt

data_2d = [
    [2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 0],
    [0, 0, 6, 8, 10, 12, 14, 16, 18, 20, 22],
    [0, 0, 0, 0, 0, 12, 14, 16, 18, 20, 22],
    [0, 0, 0, 0, 0, 12, 14, 16, 18, 20, 0],
    [0, 0, 0, 0, 0, 0, 14, 16, 18, 0, 0],
    [0, 0, 0, 0, 0, 0, 14, 16, 18, 0, 0],
    [0, 0, 0, 0, 0, 0, 14, 16, 18, 0, 0],
    [0, 0, 0, 0, 0, 0, 14, 16, 18, 0, 0],
]
# data_2d: - rows are Hs from 1 to 8 (8 rows)
#          - columns are Tp from 2 to 22 (10 columns)
#          - content is the wind speed from 2 to 22

data_array = np.array(data_2d)
x_data, y_data = np.meshgrid(np.linspace(2, 22, 11), np.linspace(1, 8, 8))


ax = plt.axes(projection="3d")
ax.plot_surface(x_data, y_data, data_array, cmap="viridis", edgecolor="black")
ax.set_xlabel("x")
ax.set_ylabel("y")
ax.set_zlabel("z")
plt.show()

对应的3D曲面效果如下:

3D曲面可视化效果1
3D曲面可视化效果2

备注:内容来源于stack exchange,提问作者Ryderc

火山引擎 最新活动