在matplotlib图中设置数据数组的散点图透明度

时间:2014-11-04 15:27:43

标签: python matplotlib alpha alpha-transparency

我正在使用matplotlib绘制数据,我从两个numpy数组中获得了一个散点图:

ax1.scatter(p_100,tgw_e100,color ='m',s = 10,label =“time 0”)

我想添加有关每个点的偏心率的信息。 为此,我有一个长度相同p_100tgw_e100ecc_100的第三个数组,其项目范围为0到1.

所以我想使用来自ecc_100的数据设置我的点的透明度,从而创建某种阴影比例。

我试过这个:

ax1.scatter(p_100,tgw_e100,color='m',alpha = ecc_100,s=10,label="time 0")

但我收到了这个错误:

ValueError: setting an array element with a sequence.

3 个答案:

答案 0 :(得分:8)

根据documentation alpha,只能是标量值。

因此,除了逐个循环所有观点外,我无法看到任何其他方式。

for x, y, a in zip(p_100, tgw_e100, ecc_100):
    ax1.scatter(x, y, color='m',alpha = a, s=10)

我认为标签会很奇怪,所以你可能需要手工制作传奇。 我从我的解决方案中省略了这一点。

我想一个使alpha关键字参数的行为与cs相符的补丁是受欢迎的。

2015年5月6日更新 根据{{​​3}},更改alpha以接受数组不会发生。错误报告建议通过RGBA数组设置颜色以控制alpha值。这听起来比我自己绘制每个点的建议要好。

c = np.asarray([(0, 0, 1, a) for a in alpha])
scatter(x, y, color=c, edgecolors=c)

答案 1 :(得分:2)

另一种选择是使用cmap参数来提供色彩映射,使用c参数来提供您想要颜色的暗/亮的映射。看看这个问题:matplotlib colorbar for scatter

以下是所有matplotlib色彩映射:http://matplotlib.org/examples/color/colormaps_reference.html我建议使用像PuRd这样的顺序色彩映射。如果颜色在相反方向变暗,则可以通过在名称上附加_r来使用“反转”颜色图,例如PuRd_r

试试这个:

ax1.scatter(p_100, tgw_e100, c=ecc_100, cmap='PuRd', s=10, label='time 0')

希望有所帮助!

答案 2 :(得分:0)

这是使用透明度的三列散点图。

x = sample_df['feature_1']
y = sample_df['feature_2']
#e = {'label_x': 'b', 'label_y': 'r'}
# label_x will be in red, label_y will be in blue
e = {'label_x': np.asarray((1, 0, 0, .1)), 'label_y': np.asarray((0, 0, 1, .1))} 
colr = sample_df['label_bc'].map(e)
plt.scatter(x, y, c=colr);