This spike map is not ideal. It uses the size channel and resized proportionally, so the size channel is sqrt to encoded value. Generally, the spike map uses the same the bottom width, so that the height channel is linear to the encoding. I changed a bit in my notebook, it's a bit more tricky than this, but still done perfectly under vega lite schemas.
https://observablehq.com/@vorbei/vega-lite-spike-map/2