In the image that you linked, each point has three related numbers: the x and y coordinates and the group (color). If you have only one information for each person, you can do something like this:
set.seed(1) centers <- data.frame(religion=1:7, cx=runif(7), cy=runif(7)) eps <- 0.04 data <- within(merge(data.frame(religion=sample(1:7, 100, T)), centers), { x <- cx+rnorm(length(cx),sd=eps) y <- cy+rnorm(length(cy),sd=eps) }) with(data, plot(x,y,col=religion, pch=16))
Notice that I create random centers for each group, and also create small movements around these centers for each observation. You will have to play with the eps parameter and possibly set up the centers manually if you want to continue this path.
source share