Я пытаюсь представить данные 3D-разброса с помощью matplotlib.
У меня есть 3 массива для построения:
- массив с X координатами точек
- массив с координатами Y точек
- массив со значениями параметров, связанных с каждой точкой (точки, координаты которых описаны в X[] и Y[]
То, что я хотел бы иметь, это:
- график 2D-облака точек (разброс) для каждой пары (X, Y)
- каждая точка имеет цвет в соответствии с соответствующим значением в 3-м массиве
- цветная полоса, представляющая диапазон и значения связанного параметра
У меня проблемы с отображением цветов. Вот минимальный код с комментариями:
import numpy as np
import matplotlib.pyplot as plt
from matplotlib import cm
from matplotlib.colors import ListedColormap
X = [] # x coordinates array
Y = [] # y coordinates array
parameter = [] # linked parameter values array, each value represents a point. This array is ordered accordingly
# next : the arrays are populated ..
# now I need to plot the point cloud (X,Y) with each point having a color representing the value of the corresponding linked parameter..
Я прочитал несколько руководств и понял, что мне нужно создать индивидуальную цветовую карту для параметра. Я попытался создать палитру в соответствии со связанным параметром:
viridisBig = cm.get_cmap('viridis', 512)
newcmp = ListedColormap(viridisBig(np.linspace(np.min(PARAMETER), np.max(PARAMETER), 512)))
Затем называется точечной диаграммой:
plt.scatter(X, Y, cmap=newcmp)
plt.colorbar(cm.ScalarMappable(cmap=newcmp))
plt.show()
Приведенный выше код работает неправильно. Он строит точечную диаграмму с уникальным цветом (синим), а цветная полоса сбоку желтая, как на прикрепленном снимке экрана:
Думаю, я что-то упускаю из виду, связанное с созданием цветовой карты, но я не нашел четких примеров для этого простого случая. Есть идеи?
Заранее спасибо!
s
) в вашем scatter. . Этот аргумент используется для определения размера и цвета - person Tom de Geus   schedule 02.03.2021