Как раскрасить точки данных на 3D-диаграмме рассеяния в matplotlib

Редактировать: мне удалось выяснить, что происходит. Scatter имеет параметр 'line-width' (lw=n), который определяет толщину линии, окружающей точку графика для точечной диаграммы. Поскольку мои точки графика имели размер 1 (s=1), ширина линии была настолько толстой, что фактически перекрывала цвет точки графика. Установка ширины линии на толщину 0 (lw=0) должна помочь.

Я хочу создать трехмерную диаграмму рассеяния точек данных, раскрашивая их на основе значения их координаты y, но мне не удается заставить точки действительно окрашиваться.

Если значение точки данных низкое, цвет должен быть ближе к синему концу цветового спектра. Если значение выше, цвет должен быть ближе к красному концу спектра.

Мне удалось нарисовать то, что я хочу, в 2D, но у меня возникли проблемы с воспроизведением процесса в 3D. Текущий код отображает точки только черным цветом.

Вот мой код для попытки 3D и скриншот желаемых результатов в 2D. Что именно я делаю неправильно здесь?

x_points, y_points и z_points — это списки значений с плавающей запятой.

import matplotlib.pyplot as plt
from matplotlib import cm
from mpl_toolkits.mplot3d import Axes3D

def three_dimensional_scatterplot(
    self, x_points, y_points, z_points, data_file
):

    cm1 = cm.get_cmap('gist_rainbow')

    fig = plt1.figure()
    ax = fig.add_subplot(111, projection='3d')
    ax.scatter(
        x_points,
        y_points,
        z_points,
        s=1,
        c=y_points,
        cmap=cm1
    )

    ax.set_xlabel('X axis')
    plt1.show()

введите здесь описание изображения


person gsamerica    schedule 17.07.2016    source источник


Ответы (1)


Вы должны построить, как здесь:

import matplotlib.pyplot as plt
from matplotlib import cm
from mpl_toolkits.mplot3d import Axes3D
import numpy as np

x = np.random.rand(25)
y = np.random.rand(25)
z = np.random.rand(25)

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
p3d = ax.scatter(x, y, z, s=30, c=y, cmap = cm.coolwarm)
plt.show()

введите описание изображения здесь

person Serenity    schedule 17.07.2016
comment
Попался, я думаю, размер был определяющим фактором здесь. Большое спасибо. - person gsamerica; 18.07.2016