matplotlib, установите цвет линий в градациях серого, используя числа от 0. (белый) до 1. (черный)

Я пытался следовать приведенным здесь инструкциям, чтобы установить цвет многих линий в градациях серого. используя поплавки от 0. (белый) до 1. (черный). Функция line.set_color() принимает числа с плавающей запятой, но когда я делаю plt.show(), появляется следующая ошибка:

ValueError: to_rgba: Invalid rgba arg "1.0"
to_rgb: Invalid rgb arg "1.0"
cannot convert argument to rgb sequence

В этом ответе объясняется, как это сделать с помощью plt.cm.RdYlBu(i). Есть ли эквивалент для оттенков серого?


person Saullo G. P. Castro    schedule 21.06.2013    source источник
comment
Вы просто хотите построить цветовую карту от белого к черному?   -  person Bitwise    schedule 21.06.2013
comment
Конечно, просто plt.cm.gray (или plt.cm.gray_r, если вы хотите, чтобы все пошло по другому пути. См. Цветовые карты здесь: matplotlib .org / examples / pylab_examples / show_colormaps.html   -  person Joe Kington    schedule 21.06.2013
comment
Кроме того, ошибка связана с тем, что matplotlib использует строки чисел с плавающей запятой для обозначения оттенков серого вместо фактических чисел с плавающей запятой. Таким образом, вы должны передать '0.5 'вместо 0.5. (Это один из самых запутанных моментов. Это по причинам, которые я не буду здесь вдаваться, но это обычная проблема. Нет никаких технических причин, по которым он не может просто принять один поплавок - это просто историческое.)   -  person Joe Kington    schedule 21.06.2013
comment
Спасибо! вы можете добавить этот комментарий в качестве ответа ...   -  person Saullo G. P. Castro    schedule 21.06.2013


Ответы (1)


По историческим причинам matplotlib ожидает, что «числа с плавающей запятой» будут интерпретироваться как значения оттенков серого, которые будут переданы в виде строк, что и является причиной вашей ошибки.

Например:

import matplotlib.pyplot as plt

fig, ax = plt.subplots()
ax.plot(range(10), color="0.5")
plt.show()

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

Кроме того, для палитры в оттенках серого просто используйте plt.cm.gray или plt.cm.gray_r (в обратном порядке). Здесь есть полный список цветовых карт: http://matplotlib.org/examples/pylab_examples/show_colormaps.html

person Joe Kington    schedule 21.06.2013