2013-06-21 2 views
2

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

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

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

+0

Вы просто хотите создать цветовой пакет от белого до черного? – Bitwise

+2

Несомненно, просто 'plt.cm.gray' (или' plt.cm.gray_r', если вы хотите, чтобы он шел другим способом. См. Здесь: http://matplotlib.org/examples/pylab_examples/show_colormaps.html –

+3

Кроме того, ошибка заключается в том, что matplotlib использует _strings_ of floats для указания оттенков серого вместо фактических поплавков. Таким образом, вы переходите в '' 0,5' 'вместо '0.5'. (Это один из наиболее запутанных углов вещей. Я не буду вдаваться здесь, но это обычная проблема. Нет никаких технических причин, почему она не может просто принять одно плавающее - это просто историческое.) –

ответ

3

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

Например:

import matplotlib.pyplot as plt 

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

enter image description here

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

+0

Страница 404. – MERose