我正在使用matplotlib绘制数据,我从两个numpy数组中获得了一个散点图:
ax1.scatter(p_100,tgw_e100,color ='m',s = 10,label =“time 0”)
我想添加有关每个点的偏心率的信息。
为此,我有一个长度相同p_100
和tgw_e100
,ecc_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.
答案 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
关键字参数的行为与c
和s
相符的补丁是受欢迎的。
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);