use*_*930 25 python scatter matplotlib
我想知道如何通过第三个变量制作matplotlib的散射函数色点.
在matplotlib中问题
gnuplot linecolor变量?和Matplotlib散点图; 颜色作为第三个变量的函数
提出了类似的查询,但是,这些问题的答案并没有解决我的问题:c=arraywhichspecifiespointcolour在散点函数中的使用仅设置填充颜色,而不是边缘颜色.这意味着使用时c=arr...失败的使用markersymbol='+'(例如,因为该标记没有填充,只有边缘).无论使用哪个符号,我都希望点可以被第三个变量可靠地着色.
有没有办法用Matplotlib的散射函数来实现这个目的?
War*_*ser 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()
Run Code Online (Sandbox Code Playgroud)
结果:

或者,对于n个点,使用shape(n,3)创建RGB颜色值数组,并将其分配给以下edgecolors关键字参数scatter():
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()
Run Code Online (Sandbox Code Playgroud)
结果:

该示例通过将值缩放z到范围[0,1]并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. ]])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
32768 次 |
| 最近记录: |