有没有办法用matplotlib制作“3D云图”?

2 投票
1 回答
2719 浏览
提问于 2025-04-18 14:23

我做了一个图表,这是一个三维散点图,里面有2000个数据点,每种颜色的点都有。请看下面的图:

在这里输入图像描述

这个图是我用matplotlib的三维散点图功能做的。

我在想有没有办法把这个图变成一种“云”图?就像是一个包围盒,把所有(或者大部分)蓝色或绿色的点都包裹起来。我的目标是想更清楚地展示这两种颜色之间的分隔。虽然现在已经可以做到这一点,但我觉得用“云”图可能会更清晰一些。

因为我找不到关于这种图的相关资料,所以还没有开始写代码。

1 个回答

3

这不是一个真正的云,而更像是一个想法:你可以使用 scipy.interpolate.interp2d 来对你的数据进行插值处理,这样可以在更密集的网格上显示数据。然后你可以用以下方式来绘制数据:

  • 使用更大的标记尺寸,比如 s=200
  • 设置较低的透明度,比如 alpha=.1
  • 选择一种在中间变成白色的 颜色映射,比如 cmap='PRGn'

然后

 ax.scatter(xs, ys, zs, c=zs, marker='D', s=200, alpha=.1, cmap='PRGn')

就可以得到这样的效果:

cloud

撰写回答