построение трехмерного разброса в matplotlib

У меня есть набор матриц Nx3 в scipy / numpy и I ' Я хотел бы сделать его трехмерным разбросом, где оси X и Y определяются значениями первого и второго столбцов матрицы, высота каждого столбца является третьим столбцом в матрице, а количество столбцов определено Н.

Каждая матрица представляет отдельную группу данных, и я хочу, чтобы каждая из них была построена с другим цветом, а затем установила легенду для всей фигуры.

У меня есть следующий код:

fig = pylab.figure()
s = plt.subplot(1, 1, 1)
colors = ['k', "#B3C95A", 'b', '#63B8FF', 'g', "#FF3300",
          'r', 'k']
ax = Axes3D(fig)
plots = []
index = 0

for data, curr_color in zip(datasets, colors):
    p = ax.scatter(log2(data[:, 0]), log2(data[:, 1]),
                   log2(data[:, 2]), c=curr_color, label=my_labels[index])

    s.legend()
    index += 1

    plots.append(p)

    ax.set_zlim3d([-1, 9])
    ax.set_ylim3d([-1, 9])
    ax.set_xlim3d([-1, 9])

Проблема это то, что ax.scatter рисует вещи с прозрачностью, и я бы хотел это удалить. Также я хотел бы установить xticks, yticks и zticks - как я могу это сделать?

Наконец, вызов легенды не появляется, хотя я вызываю label = "" для каждого вызова scatter. Как мне заставить появиться легенду?

Большое спасибо за вашу помощь. как только вы объявляете функцию, она «поднимается» за кулисы, как если бы она появилась раньше всего. Таким образом, вам не нужно беспокоиться о порядке вещей в вашем коде, и вы можете рассматривать функции как модульные части кода. Именно отсутствие этой функции меня кусает в Clojure. Я делаю что-то неправильно? Это скорее мелкое раздражение, чем огромное дело. Вы просто привыкли обращать на это внимание?

16
задан Matt Briggs 30 March 2011 в 18:08
поделиться