我正在用 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.
最佳答案
根据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 日更新
根据this issue ,更改 alpha
以接受数组是不会发生的。错误报告建议通过 RGBA 数组设置颜色以控制 alpha 值。这听起来比我建议单独绘制每个点更好。
c = np.asarray([(0, 0, 1, a) for a in alpha])
scatter(x, y, color=c, edgecolors=c)
关于python - 在 matplotlib 图中设置数据数组的散点透明度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26738881/