Python matplotlib散点图颜色作为第三个变量的函数

Python matplotlib散点图颜色作为第三个变量的函数,python,matplotlib,scatter,Python,Matplotlib,Scatter,我想知道如何通过第三个变量生成matplotlib的散射函数颜色点 问题 及 但是,提出了类似的问题,这些问题的答案并没有解决我的问题:在散射函数中使用c=arraywhichspecifiespointcolor,只设置填充颜色,而不是边缘颜色。这意味着使用c=arr..时会失败,例如使用markersymbol='+'(因为该标记没有填充,只有边)。我希望点被第三个变量可靠地着色,不管使用哪个符号 有没有一种方法可以通过Matplotlib的分散函数实现这一点?这对我来说很有用,使用Matp

我想知道如何通过第三个变量生成matplotlib的散射函数颜色点

问题 及 但是,提出了类似的问题,这些问题的答案并没有解决我的问题:在散射函数中使用
c=arraywhichspecifiespointcolor
,只设置填充颜色,而不是边缘颜色。这意味着使用
c=arr..
时会失败,例如使用
markersymbol='+'
(因为该标记没有填充,只有边)。我希望点被第三个变量可靠地着色,不管使用哪个符号


有没有一种方法可以通过Matplotlib的分散函数实现这一点?

这对我来说很有用,使用Matplotlib 1.1:

import numpy as np
import matplotlib.pyplot as plt

x = np.arange(10)
y = np.sin(x)

plt.scatter(x, y, marker='+', s=150, linewidths=4, c=y, cmap=plt.cm.coolwarm)
plt.show()
结果:

或者,对于n个点,创建一个带有形状(n,3)的RGB颜色值数组,并将其分配给
scatter()
edgecolors
关键字参数:

结果:

该示例通过将
z
值缩放到范围[0,1],并使用缩放值调用colormap
plt.cm.coolwarm
来获取RGBA值。以这种方式调用时,matplotlib colormap返回一个RGBA值数组,每一行给出相应输入值的颜色。例如:

>>> t = np.linspace(0, 1, 5)
>>> t
array([ 0.  ,  0.25,  0.5 ,  0.75,  1.  ])
>>> plt.cm.coolwarm(t) 
array([[ 0.2298,  0.2987,  0.7537,  1.    ],
       [ 0.5543,  0.6901,  0.9955,  1.    ],
       [ 0.8674,  0.8644,  0.8626,  1.    ],
       [ 0.9567,  0.598 ,  0.4773,  1.    ],
       [ 0.7057,  0.0156,  0.1502,  1.    ]])

当我设置
marker='+'
@Avaris:也适用于我时,我会得到彩色的
+
符号。我相应地更新了我的答案。谢谢沃伦的回答。不幸的是,你的第一个例子给我带来了黑色的加号。我不知道为什么。mpl.\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。我可能必须尝试向“edgecolors”传递RGB列表,但这意味着我必须手动从“z”值和颜色贴图创建RGB列表,对吗?我使用的是1.1版。在1.0和1.1之间对标记代码进行了一些更改,所以这可能是个问题。我已经更新了第二个示例,展示了将“z”值映射到颜色的一种方法(但我在matplotlib 1.0中没有尝试过)。接下来,当我使用较新(1.1)版本的matplotlib时,我确实得到了完全相同代码的彩色点。被认为已解决的问题。谢谢如果您使用的是
Python 2.7
请记住使用:
from\uuuuuu future\uuuuu import division
,否则
颜色
数组将全部为零(由于四舍五入)
>>> t = np.linspace(0, 1, 5)
>>> t
array([ 0.  ,  0.25,  0.5 ,  0.75,  1.  ])
>>> plt.cm.coolwarm(t) 
array([[ 0.2298,  0.2987,  0.7537,  1.    ],
       [ 0.5543,  0.6901,  0.9955,  1.    ],
       [ 0.8674,  0.8644,  0.8626,  1.    ],
       [ 0.9567,  0.598 ,  0.4773,  1.    ],
       [ 0.7057,  0.0156,  0.1502,  1.    ]])