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

时间:2012-10-18 23:05:32

标签: python matplotlib scatter

我想知道如何用第三个变量制作matplotlib的散射函数色点。

问题 gnuplot linecolor variable in matplotlib?Matplotlib scatterplot; colour as a function of a third variable 然而,提出类似的查询,这些问题的答案并没有解决我的问题:在散点函数中使用c=arraywhichspecifiespointcolour只设置填充颜色,而不是边缘颜色。这意味着使用c=arr...markersymbol='+'的使用失败(例如,因为该标记没有填充,只有边缘)。无论使用哪个符号,我都希望点可以被第三个变量可靠地着色。

有没有办法用Matplotlib的分散函数来实现这个目的?

1 个答案:

答案 0 :(得分:29)

这适用于我,使用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()

结果:

enter image description here

或者,对于n个点,使用shape(n,3)创建一个RGB颜色值数组,并将其分配给edgecolors的{​​{1}}关键字参数:

scatter()

结果: enter image description here

该示例通过将import numpy as np import matplotlib.pyplot as plt x = np.linspace(0, 20, 100) y = np.sin(x) z = x + 20 * y scaled_z = (z - z.min()) / z.ptp() colors = plt.cm.coolwarm(scaled_z) plt.scatter(x, y, marker='+', edgecolors=colors, s=150, linewidths=4) plt.show() 值缩放到范围[0,1]并使用缩放值调用colormap z来获取RGBA值。当以这种方式调用时,matplotlib colormap返回RGBA值的数组,每行给出相应输入值的颜色。例如:

plt.cm.coolwarm