I’m not an MEG guy, so I never used layouts, but here are my thoughts:
The layout you read has center away from
(0, 0, 0):
# array([0.47688583, 0.46079796, 0.03376805, 0.02814004])
so the position of the sensors that you see in the topomap is correct.
The layout seems not to be in head coordinates. When applying montages the channel positions are transformed to head coordinates. I don’t think you can apply layouts, so you could construct a montage out of this layout and then apply it to the data.
Another, simpler, way would be to center your layout coordinates around zero and then change the sphere radius to something that looks ok. For example:
import numpy as np
layout = 'Vectorview-all.lout'
laypos = mne.channels.read_layout(layout).pos
laypos[:, :2] -= laypos[:, :2].mean(axis=0, keepdims=True)
rnd_data = np.random.random(306)
mne.viz.plot_topomap(rnd_data, laypos, sphere=0.3)
which gives something like this:
If layouts are supposed to work out of the box when their
.pos is passed to
mne.viz.plot_topomap then I’d consider the behavior reported by @guiomar to be a bug. WDYT?