Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在matplotlib plot中从数据数组设置散布点透明度_Python_Matplotlib_Alpha_Alpha Transparency - Fatal编程技术网

Python 在matplotlib plot中从数据数组设置散布点透明度

Python 在matplotlib plot中从数据数组设置散布点透明度,python,matplotlib,alpha,alpha-transparency,Python,Matplotlib,Alpha,Alpha Transparency,我使用matplotlib绘制数据,我从两个numpy阵列中获得了散点图: ax1.散射(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 = ec

我使用matplotlib绘制数据,我从两个numpy阵列中获得了散点图:

ax1.散射(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.
根据阿尔法只能是一个标量值

因此,除了一个接一个地循环你的观点之外,我看不到任何其他方法

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日更新 根据,更改
alpha
以接受数组是不可能的。错误报告建议通过RGBA数组设置颜色以控制alpha值。这听起来比我建议自己画每个点要好

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

另一个选项是使用
cmap
参数提供颜色映射,使用
c
参数提供颜色的暗/浅映射。看看这个问题:

以下是所有matplotlib颜色映射:我建议使用类似
PuRd
的顺序颜色映射。如果颜色在相反方向变暗,您可以通过在名称后面附加
\u r
来使用“反转”颜色贴图,如
PuRd\u r

试试这个:

ax1.scatter(p_100, tgw_e100, c=ecc_100, cmap='PuRd', s=10, label='time 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);