python 三维散点图拟合曲面_python-基于通过散点的类别的3D颜色曲面

我有以下格式的数据:

X,Y,Z,类别

我使用plotly生成散点图,然后使用以下代码通过散点拟合曲线.

from scipy.interpolate import griddata

import numpy as np

import matplotlib.pyplot as plt

from matplotlib import cm

from mpl_toolkits.mplot3d import Axes3D

x=np.asarray([3,5,9,3,3,7,6,9,1,9]);

y=np.asarray([4,3,3,10,8,2,4,10,9,3]);

z=np.asarray([1,2,4,10,1,7,10,3,1,7]);

# x = np.random.random(100)

xi=np.linspace(min(x), max(x),50)

#print xi

yi=np.linspace(min(y),max(y),50)

X,Y= np.meshgrid(xi,yi)

Z = np.nan_to_num(griddata((x,y), z, (X, Y), method='cubic'))

fig = plt.figure()

ax = fig.add_subplot(111, projection='3d')

ax.scatter(x, y, z)

ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=cm.coolwarm,

linewidth=0, antialiased=False,alpha=0.4)

plt.show()

我想要做的是根据类似这样的类别为绘图着色:

AtV0f.png

其中红色代表类别1,蓝色代表类别2.

因此,为了获得类似的内容,我需要生成一个2D数组,然后使用一个colormap / colorscale相应地为类别着色.

以上输出是使用XLSTAT创建的,其中将category作为第4个col作为类别.

有人可以解释我如何生成Z数据,以帮助我为类别添加不同的颜色吗?

我曾尝试将2D矩阵分成0和1的一半,并得到类似的输出.

ghYSF.png

考虑以下样本数据:

x y z Category

3 4 1 Cat 1

5 3 2 cat2

9 3 4 cat2

3 10 10 cat3

3 8 1 cat3

7 2 7 cat2

6 4 10 Cat 1

9 10 3 Cat 4

1 9 1 Cat 1

9 3 7 cat2

我需要生成2D数据,以表示表面颜色并使用自定义颜色为不同类别着色