我有一个使用matplotlib绘制的4D图,第4维是颜色。
让我们假设所有3个轴的范围都是0到5。用于绘图的数组看起来像这样-[0,1,2,50],[1,2,3,40],[5,5 ,, 5,80]。因此,在绘制时(假设有散点图),我将在图形的坐标[0,1,2],[1,2,3],[5,5,5]上看到3个点。
我的问题是-有没有办法检查图中没有任何点的坐标的组合。例如,在上述情况下,坐标[1,2,4],[1,2,5],[0,0,0],[1,1,1],[4]上没有点,1,2],[5,3,1]等。我可以单独检查是否有某个元素(0到5之间)没有被特定轴覆盖(使用'is in')。但是,如何获取缺少的坐标组合,然后在图形中用一些虚拟值绘制它呢?任何线索或解决方案将不胜感激。
#create an empty list
list1 = []
#append elements to the list
list1.append([0,1,2,50])
list1.append([1,2,3,40])
list1.append([5,5,5,80])
cmap = LinearSegmentedColormap.from_list('mycmap', ['green', 'yellow', 'red'])
fig = plt.figure()
ax = fig.gca(projection = '3d')
ax.set_xlim(0,5)
ax.set_ylim(0,5)
ax.set_zlim(0,5)
#convert list into array for slicing
array1 = np.array(list1)
ax.scatter(array1[:,0],array1[:,1],array1[:,2],c=array1[:,3], cmap = cmap)
plt.show()
对于上面的,我需要在其余坐标上加上零。 当我绘图时,坐标(0,1,2)获得对应于50的颜色,(1,2,3)获得对应于40的颜色,对于坐标(5,5,5)同样。因此,其余坐标应附加零。像(1,4,1,0),(1,3,5,0),(2,4,1,0)等。
答案 0 :(得分:0)
这就是我要解决的问题。而不是检查没有可用坐标的位置,而是使用虚拟值初始化矩阵并将所有可用值设置为它们应该具有的值。看起来像这样:
myData = [[0,1,2,50], [1,2,3,40], [5,5,5,80]]
fullMatrix = np.empty(shape=(6,6,6), dtype=np.int8) # 0 to 5 in each dimension
fullMatrix.fill(-1) # -1 is an example for the dummy value
for i in myData:
fullMatrix[i[0],i[1],i[2]] = i[3]