I've always liked this visualisation too!
I like to think of fmap as a converting a normal function into a function that operates "through" a functor. This is clearer looking at the Haskell type signature, which can be written as:
fmap :: (a -> b) -> (f a -> f b)