Диаграмма рассеяния Python: изменение цвета на основе значений X и Y

Я попытался воссоздать прикрепленное изображение с помощью cmaps, а также с операторами if/else.

Пример

Моя текущая попытка основана на совете, данном в эта тема

Я пытался использовать 1.8‹=x‹=2.2, но получаю сообщение об ошибке.

Вот мой текущий код ниже:

import numpy as np
import matplotlib.pyplot as plt
N = 500
# center, variation, number of points
x = np.random.normal(2,0.2,N)
y = np.random.normal(2,0.2,N)
colors = np.where(x<=2.2,'r',np.where(y<=2.2,'b','b'))
plt.scatter(x , y, c=colors)
plt.colorbar()
plt.show()

person Haribon66    schedule 06.09.2018    source источник


Ответы (1)


Чтобы сделать этот график, вам нужно передать массив с цветом каждой точки. В этом случае цвет — это расстояние до точки (2, 2), так как распределение сосредоточено в этой точке.

import numpy as np
import matplotlib.pyplot as plt

N = 500
# center, variation, number of points
x = np.random.normal(2,0.2,N)
y = np.random.normal(2,0.2,N)

# we calculate the distance to (2, 2).
# This we are going to use to give it the color.
color = np.sqrt((x-2)**2 + (y-2)**2)

plt.scatter(x , y, c=color, cmap='plasma', alpha=0.7)
# we set a alpha
# it is what gives the transparency to the points.
# if they suppose themselves, the colors are added.

plt.show()

сюжет

person Lucas    schedule 06.09.2018
comment
Большое спасибо, Лукас. Я думаю, что это достаточно близко, когда я использую обратную цветовую карту. - person Haribon66; 06.09.2018