UK post codes are somewhat tricky (they are not defined as polygons, but a set of addresses, not necessarily continuous).
You can download a shapefile of reconstructed boundaries - a good approximation for most use cases - from Open Door Logistics web pages.
The shapefile can be read in via {sf} package workflow; it will be a modified data.frame, so it should be easy to attach your data using one of the dplyr::*_join() family functions.
Recent versions of {ggplot2} support geom_sf(), which is a way to visualize sf objects, including polygons; just set the fill aesthetic to your value, and proceed like you would with an ordinary ggplot.