Как сделать контур / плотностный график большого двумерного графика рассеяния - PullRequest
1 голос
/ 20 июня 2019

У меня переполненный график рассеяния, и я пытаюсь создать контур или график плотности, чтобы увидеть, есть ли какие-либо определенные группы населения в моих данных. Я пробовал следующий код, но я получаю ошибку:

слишком много значений для распаковки (ожидается 2)

Мой код:

x = CDM_300[:,[1]]
y = CDM_300[:,[2]]

# Evaluate a gaussian kde on a regular grid of nbins x nbins over data extents
nbins=300
k = kde.gaussian_kde([x,y])
xi, yi = np.mgrid[x.min():x.max():nbins*1j, y.min():y.max():nbins*1j]
zi = k(np.vstack([xi.flatten(), yi.flatten()]))

# Make the plot
plt.pcolormesh(xi, yi, zi.reshape(xi.shape))
plt.show()

# Change color palette
plt.pcolormesh(xi, yi, zi.reshape(xi.shape), cmap=plt.cm.Greens_r)
plt.show()

CDM_300 - это массив (23800, 3), если я попытаюсь np.meshgrid данных, мой ноутбук просто выйдет из строя.

1 Ответ

0 голосов
/ 20 июня 2019

Проблема возникает из-за того, что вы проиндексировали данные.Когда вы делаете [:, [1]], форма ваших данных становится (23800, 1), и каждый элемент представляет собой массив.

Используйте следующую индексацию без дополнительных [] вокруг второго индекса.

x = CDM_300[:, 1]
y = CDM_300[:, 2]
...