I don't have your data so I fabricate some points that are close to each other:
ggplot has lots of awesome options but it can be a pain in the a** to get everything right 
I find this page very helpful:
and google 'ggplot cheat sheet' 
# fabricated some data
mds_a <- cmdscale(1-cor(iris[, -5], use = "complete.obs"))
mds_b <- mds_a +0.0001
rownames(mds_b) <- paste0(rownames(mds_a),"2")
mds <- rbind(mds_a,mds_b)
# put these in the right order for your data (or you can automate it for large numbers)
categories <- c("aroma","aroma","aroma","flavor","flavor","flavor","texture","texture")
# add this column to your dataframe
mds<- cbind(mds, categories)
ggplot(
# define data
data = as.data.frame(mds),
# define what to plot
aes(x =mds[,1], y = mds[,2])
) +
# find other themes on ggplot documentation pages
theme_bw() +
# add labels that don't overlap
geom_label_repel(
# define esthetics for labels
aes(label = rownames(mds), # text on label
fill = factor(categories) # on what column the background color for label is dependant
),
color = 'white', # text color on label
box.padding = unit(0.45, "lines"), # how far box is away from point + "lines" means connect a line between point and label
segment.color = 'grey50' # color of said line
) +
geom_point()
sorry if I overcommented the code, but I thought, better too much than too little 