Там нет необходимости вручную устанавливать цвета. Вместо этого укажите цветовую карту в оттенках серого ...
import numpy as np
import matplotlib.pyplot as plt
# Generate data...
x = np.random.random(10)
y = np.random.random(10)
# Plot...
plt.scatter(x, y, c=y, s=500)
plt.gray()
plt.show()
Или, если вы предпочитаете более широкий диапазон цветовых карт , вы также можете указать cmap
kwarg для scatter
. Чтобы использовать обратную версию любого из них, просто укажите « _r
» версию любого из них. Например, gray_r
вместо gray
. Есть несколько различных оттенки серых цветовые карт предварительно сделанных (например gray
, gist_yarg
, binary
и т.д.).
import matplotlib.pyplot as plt
import numpy as np
# Generate data...
x = np.random.random(10)
y = np.random.random(10)
plt.scatter(x, y, c=y, s=500, cmap='gray')
plt.show()
mpl.cm
также доступен напрямую какplt.cm
.plt.contour()
илиplt.contourf()
- но это другой вопросВ matplotlib серые цвета могут быть заданы в виде строки с числовым значением от 0 до 1.
Например
c = '0.1'
Затем вы можете преобразовать третью переменную в значение внутри этого диапазона и использовать его для раскраски ваших точек.
В следующем примере я использовал положение y точки в качестве значения, определяющего цвет:
источник
c
аргумента укажите массив (n, 4) со значениями альфа в четвертом столбце. Если третья переменная Z, сshape=(n,1)
, тоcolors = numpy.hstack((numpy.zeros_like(z), numpy.zeros_like(z), numpy.ones_like(z), z/z.max()))
дает очень хороший эффект (конечно, он может быть изменен).plt.colorbar()
сделает этоИногда вам может потребоваться построить график цвета точно в зависимости от значения x . Например, у вас может быть фрейм данных с 3 типами переменных и некоторыми точками данных. И вы хотите сделать следующее,
В этом случае вам, возможно, придется написать короткую функцию, чтобы сопоставить значения x с соответствующими именами цветов в виде списка, а затем передать этот список
plt.scatter
команде.источник