【问题标题】:How to create a 3d Heatmap from a discrete data set in Python?如何从 Python 中的离散数据集创建 3d 热图?
【发布时间】:2018-12-17 15:52:25
【问题描述】:

我有一个 [(X1, Y1, Z1, VALUE1), (X2, Y2, Z2, VALUE2)...] 形式的大型数据集。点的几何形状是圆柱的表面,虽然有许多离散点,但它们远不及完整的网格。

我想创建一个基本图,其中每个点根据其值的高低被赋予颜色强度(如热图),然后颜色在某种程度上被平滑以创建一个有凝聚力的表面而不是离散点

我目前正在使用 matplotlib,但是,如果需要,我也会使用其他库。

我研究了曲面图和三曲面图,但似乎都没有做我想要的(尽管 plot_trisurf() 的文档有点混乱,所以也许它仍然是一种可能性)。 我也看过这个帖子:3D discrete heatmap in matplotlib.

虽然设置基本相同,但我希望有一个更具凝聚力的曲面图,而不是 3d 俄罗斯方块设置。最初的答案似乎非常接近我想要的解决方案,但是,我希望颜色基于 VALUE 而不是 Z,并且如果可能的话,在各部分之间进行颜色平滑。

【问题讨论】:

标签: python matplotlib plot 3d heatmap


【解决方案1】:

根据您的点云的密集程度,您可以通过它获得所需的内容(调整大小参数 s,以最适合您的数据填充绘图):

from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure()
ax = fig.gca(projection='3d')
ax.scatter(X, Y, Z, c=Value, lw=0, s=20)
plt.show()

【讨论】:

  • 这太好了,非常感谢。虽然它看起来确实像网格,但有什么方法可以强制点连接并在它们之间进行某种颜色平滑处理?
  • 我不知道,采用上述方法。当我使用圆柱体时,我有时会根据 X、Y 数据创建半径和角度变量,使用 numpy.linspace 创建一个规则网格(Z 与角度),然后使用 scipy griddata 将我的数据插入到网格上。然后我使用 contourf 在展开的圆柱体(扁平矩形)上绘制连续轮廓。
  • @screenpaver 你能分享你的代码吗,我也需要类似的东西,但到目前为止还没有得到任何结果。谢谢
猜你喜欢
  • 2017-08-06
  • 2018-07-06
  • 2017-04-12
  • 2021-06-25
  • 1970-01-01
  • 2012-02-04
  • 1970-01-01
  • 2023-03-12
  • 1970-01-01
相关资源
最近更新 更多