Сюжет 2-мерного массива NumPy с использованием определенных столбцов - программирование
Подтвердить что ты не робот

Сюжет 2-мерного массива NumPy с использованием определенных столбцов

У меня есть 2D-массив numpy, который создается следующим образом:

data = np.empty((number_of_elements, 7))

Каждая строка с 7 (или любыми) поплавками представляет свойства объекта. Первыми двумя являются, например, позиция x и y объекта, остальные - различные свойства, которые могут даже использоваться для применения информации о цвете к сюжету.

Я хочу сделать график разброса от data, так что если p = data[i], объект изображается как точка с p[:2] как его 2D-позиция и, скажем, p[2:4] как информация о цвете (длина этого вектора должен определить цвет для точки). Другие столбцы не должны иметь значения для сюжета.

Как мне это сделать?

4b9b3361

Ответ 1

Настройка базовой фигуры matplotlib проста:

import matplotlib.pyplot as plt
import numpy as np
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)

Выбор столбцов для x, y и color может выглядеть примерно так:

N = 100
data = np.random.random((N, 7))
x = data[:,0]
y = data[:,1]
points = data[:,2:4]
# color is the length of each vector in `points`
color = np.sqrt((points**2).sum(axis = 1))/np.sqrt(2.0)
rgb = plt.get_cmap('jet')(color)

В последней строке извлекается цветовая палитра jet и сопоставляет каждое значение с плавающей точкой (от 0 до 1) в массиве color до значения RGB с тремя кортежами. Существует список колонок, которые можно выбрать из здесь. Существует также способ определения пользовательских цветовых папок.

Создание графика рассеяния теперь прямолинейно:

ax.scatter(x, y, color = rgb)
plt.show()
# plt.savefig('/tmp/out.png')    # to save the figure to a file

enter image description here

Ответ 2

Не уверен, что именно вы ищете в сюжете, но вы можете разрезать 2D-массивы следующим образом:

>>> a
array([[0, 1, 2],
       [3, 4, 5],
       [6, 7, 8]])
>>> a[:,1]
array([1, 4, 7])
>>> a[:,1:3]
array([[1, 2],
       [4, 5],
       [7, 8]])

Затем некоторый matplot, чтобы позаботиться о заговоре. Если вы найдете то, что ищете, в Галерея Matplotlib Я могу вам помочь.