But that is too easy answer to give, so in principle:
for colors consider adjusting the scale_fill_* part of your ggplot call
for zoom consider adjusting the coords_sf() part of your ggplot call; note that you can set both X and Y limits separately, with interesting interpretation of the special value of NA as "leave it as it stands"
So consider this piece of code as a baseline - it draws a dull default:
library(sf)
library(ggplot2)
shape <- st_read(system.file("shape/nc.shp", package="sf")) # included with sf package
# default zoom, default colors
ggplot(data = shape,
aes(fill = BIR74)) +
geom_sf()
it sets fill colors to a Wes Anderson palette - Zissou's Life Aquatic, because why not?
it zooms the map out by extending the X coordinate westward to -90° and Y coordinate northward to 40°, leaving the east and south margins unchanged (again, for no particular reason other than just showing off...)