Проверка отсутствующей комбинации координат на графике 4D и добавление фиктивных значений для отсутствующей комбинации - PullRequest
0 голосов
/ 12 января 2019

У меня есть четырехмерный график, построенный с использованием matplotlib, цвет 4-го измерения.

Предположим, что диапазон всех трех осей равен от 0 до 5. Массив для графика выглядит примерно так - [0,1,2,50], [1,2,3,40], [5,5 , 5,80]. Таким образом, я буду видеть 3 точки на координатах [0,1,2], [1,2,3], [5,5,5] на графике при построении (при условии точечного графика).

Мой вопрос - есть ли способ проверить комбинации координат на графике, которые не имеют никаких точек. В приведенном выше примере, например, нет координат на координатах [1,2,4], [1,2,5], [0,0,0], [1,1,1], [4 , 1,2], [5,3,1] и так далее. Я могу индивидуально проверить, есть ли элемент (между 0 и 5), который не покрыт определенной осью (используя «находится в»). Но как получить недостающую комбинацию координат и затем отобразить ее на графике с каким-нибудь фиктивным значением? Будем благодарны за любые предложения или решение.

#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) и т. Д.

1 Ответ

0 голосов
/ 12 января 2019

Вот как бы я решил эту проблему. Вместо того, чтобы проверять, где нет доступных координат, я бы инициализировал матрицу фиктивным значением и установил для всех доступных значение, которое они должны иметь. Это выглядит так:

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]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...