2014-09-15 4 views
5

Согласно документам, это должно работать. Это не. Я, должно быть, неправильно читаю документы. У кого-нибудь есть проблема?set rgba цвет точек в matplotlib

from pylab import * 
N = 100 
x = randn(N) 
y = randn(N) 
c = rand(N, 4) 
plot(x, y, 'o', c=c) 

Ошибка в IPython ноутбука (python3):

lib/python3.3/site-packages/IPython/core/formatters.py:239: FormatterWarning: Exception in image/png formatter: to_rgba: Invalid rgba arg "[[ 0.29844256 0.96853857 0.75812229 0.22794978] 
[ 0.81606887 0.31641358 0.53254456 0.44198844] 
[ 0.06961026 0.3265891 0.03006253 0.00485412] 
[ 0.32580911 0.86645991 0.04140443 0.35550554] 

Ошибка в простом IPython (Python3):

ValueError: to_rgba: Invalid rgba arg "[[ -2.78401664e-01 -8.33924015e-01 7.54508871e-01] 
[ -3.02839674e-01 -1.18292516e+00 -7.71274654e-01] 
[ -3.58099013e-01 -1.18899472e+00 1.39868995e+00] 

Docs:

help(plot) 

.... 

In addition, you can specify colors in many weird and 
wonderful ways, including full names (``'green'``), hex 
strings (``'#008000'``), RGB or RGBA tuples (``(0,1,0,1)``) or 
grayscale intensities as a string (``'0.8'``). Of these, the 
string specifications can be used in place of a ``fmt`` group, 
but the tuple forms can be used only as ``kwargs``. 
+0

Не могли бы вы быть немного более описательный, чем * "делает не работа]"*? Что происходит, и чего вы ожидаете? Не могли бы вы дать [минимальный пример] (http://stackoverflow.com/help/mcve), включая импорт и т. Д.? И можете ли вы предоставить источник для документов? – jonrsharpe

+0

Добавлено сообщение об ошибке. Я предполагаю, что читаю документы неправильно, но я был удивлен, когда не нашел что-то об этом в нескольких усталых поисковых запросах Google. – mathtick

+0

И что еще? – jonrsharpe

ответ

11

Из вашего описания, это звучит, как вы хотите точек с несколькими разными цветами?

Если это так, используйте scatter, а не участок. (Это в основном разница между этими двумя plot является более эффективным, но ограничивается одним размер/цвет для всех точек.).

Например:

import matplotlib.pyplot as plt 
import numpy as np 

N = 100 
x = np.random.normal(0, 1, N) 
y = np.random.normal(0, 1, N) 
c = np.random.random((N, 4)) 

plt.scatter(x, y, c=c) 
plt.show() 
3

Ваш звонок в rand (numpy.random.rand) возвращает Numpy ndarray:

numpy.random.rand (d0, d1, ..., Dn) Случайные значения в заданной форме.

Создайте массив данной формы и распространите его со случайными выборками из равномерного распределения по [0, 1).

Параметры:
d0, d1, ..., дп: INT, опция

Размеры возвращаемого массива, все должно быть положительным. Если аргумент не задан, возвращается один плавающий Python.

Возвращает:
из: ndarray, форма (d0, d1, ..., Dn)

Случайные значения.

Аргумент matplotlib color должен соответствовать одному из указанных форматов. В частности, вы хотите передать кортеж RGBA python.

Попробуйте что-то больше, как это:

color = tuple(numpy.random.rand(4)) # 4 random vals between 0.0-1.0 
+1

Этот ответ на самом деле помог мне решить мою проблему с похожим сообщением об ошибке. благодаря –

Смежные вопросы