【发布时间】:2016-12-23 04:53:39
【问题描述】:
我有以下格式的数据:
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()
我想做的是根据这样的类别为情节着色: 其中红色代表类别 1,蓝色代表类别 2。 所以为了得到这样的东西,我需要生成一个 2D 数组,然后使用颜色图/色标对类别进行相应的着色。
上面的输出是使用 XLSTAT 创建的,其中将类别作为第 4 列作为类别。
谁能解释我如何生成 Z 数据以帮助我对类别进行不同的着色?
我曾尝试将二维矩阵分成两半 0 和半 1,并得到类似这样的输出。
考虑以下示例数据:
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 数据来表示表面颜色并使用自定义颜色为不同类别着色
【问题讨论】:
标签: python matlab matplotlib 3d plotly