Python matplotlib/pylab - 3D 地毯图

标签 python 3d plot matplotlib

我想用 Python Pylab 或 matplotlib 绘制一个 3D 地毯图。我用地毯图解释我的意思:

我在 X,Y 网格上有点。这些点附有高程,但也有一个来自有限集合的整数。一个常见的 3D 图可以使浮雕可视化。高程沿 Z 轴,我们可以将一个点的高程可视化,该点由其沿 Z 轴的坐标 X、Y 确定。或者,我绘制高程热图。这是一个二维图,由 X、Y 确定的每个像素都有一个颜色,它是高度的函数,红色代表顶点,蓝色代表底部。我对这些数据进行了一些聚类,在聚类之后,对于每个像素,我有两个信息:高程和标签(整数)。我可以绘制一个 2D map ,每个像素都用它的标签着色,这给了我聚类结果。

现在,我想在同一个 3D 图形上绘制这两个信息。 Z坐标应该是高程,表面上的点应该用它的“簇色”着色。这就是我所说的 3D 地毯图(如果术语听起来不正确,请告诉我)。

最佳答案

您的“群集颜色”是您网格的 X、Y、Z 值的一组条件。如果您可以将这些作为掩码(True/False 值),则可以很简单地将颜色映射到它们上。我已经给出了一组任意条件的示例,您可以根据自己的需要进行调整。代码改编自 http://matplotlib.sourceforge.net/mpl_toolkits/mplot3d/tutorial.html :

from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import numpy as np

# Some sample data
x_side = np.arange(-5, 5, 0.04)
y_side = np.arange(-5, 5, 0.04)
X, Y = np.meshgrid(x_side,y_side)

# Fake mountains
Z = np.exp(-(X**2+Y**2)) + 2*np.exp(-((X-2)**2+Y**2)) 

# Assign colors based off some user-defined condition
COLORS = np.empty(X.shape, dtype=str)
COLORS[:,:] = 'b'
COLORS[(Z>.1) * (Z<.3)] = 'r'
COLORS[Z>.3] = 'g'
COLORS[X+Y < -1] = 'k'

# 3D surface plot
fig = plt.figure()
ax = fig.gca(projection='3d')
surf = ax.plot_surface(X, Y, Z, facecolors=COLORS, rstride=1, cstride=1,
        linewidth=0)
plt.show()

enter image description here

关于Python matplotlib/pylab - 3D 地毯图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12159912/

相关文章:

python - Pandas 在执行 groupby 后重置索引并保留选择性列

python - 如何使用 Google Colab 安装 vizdoom?

algorithm - 给定四面体上的三个点,找到第 4 个

plot - 在 Labview 中自定义绘图

python - GAE 更喜欢 webapp2 还是 flask?

python - sudo 找不到新的 python 版本

3d - 如何使用 OpenCV cvProjectPoints2 函数

java - 更改for循环的顺序?

python - 在图例中显示标记的边缘和面

plot - 如何通过 Gadfly.jl 保存绘图而不显示