This is one of the classic problems for the 'Iris' data set. This is a link to a whole set of plotting projects based on that data set with R code, which you may be able to adapt to your problem.
Here is an approach that uses with base R rather than an add-on package.
plot(iris$Petal.Length, iris$Petal.Width, pch=21,
bg=c("red","green3","blue")[unclass(iris$Species)],
main="Edgar Anderson's Iris Data")
which produces this figure:
From there, depending on your plot, you can start messing about with alpha/transparency levels to allow for overplotting, etc. but I would build up from a very basic graph first.
While there are many reasons to stick with base R, other packages simplify plotting. Separating out data by a distinguishing feature is one of the strengths of the ggplot2 and lattice packages. ggplot2 makes particularly visually appealing plots. Both packages are demonstrated in the answerdemonstrated in the answer by @cbeleites.