在Matplotlib中设置散点图点的RGBA颜色

7

根据文档,这个应该可以工作。但事实并非如此。我可能读错了文档。有人知道怎么解决吗?

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

IPython notebook(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]

文档:

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``.

你能否更详细地描述一下比“不起作用”更具体的情况?发生了什么,你原本期望的是什么?你能提供一个包括导入等的最小示例吗?同时,你能提供文档来源吗? - jonrsharpe
添加了错误信息。我认为我可能没有正确阅读文档,但我很惊讶在几次疲倦的谷歌搜索中没有找到关于这个问题的任何内容。 - mathtick
其他的事情呢? - jonrsharpe
我认为这更多是关于文档而不是代码,但我已经添加了更多内容。 - mathtick
2个回答

13

从您的描述来看,似乎您想要具有多个不同颜色的点?

如果是这样,请使用scatter而不是plot。(这基本上是两者之间的区别。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()

5
您调用的randnumpy.random.rand)返回一个numpy ndarray:

numpy.random.rand(d0, d1, ..., dn) 给定形状中的随机值。

创建给定形状的数组,并使用来自[0,1)上均匀分布的随机样本传播它。

参数:
d0,d1,...,dn:int,可选

返回数组的维度应全部为正。如果没有给出参数,则返回单个Python浮点数。

返回:
out:ndarray,形状为(d0,d1,...,dn)

随机值。

matplotlib的color参数需要遵循列出的格式之一。具体来说,您需要传递一个RGBA python元组。

尝试像这样做:

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

2
这个答案实际上帮助我解决了一个类似错误信息的问题。谢谢。 - red_tiger

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接