One thing that popped up on me was to consider this network - R has many packages to build them.
Here's a very simple solution: First, I used your parent list to create sociomatrix - you can usually enter networks using edge lists - here I put 1 for the first parent relationship and 2 for the second.
psmat <- rbind(c(0, 0, 1, 1, 1, 0, 0, 0, 0), c(0, 0, 2, 2, 0, 0, 0, 0, 0), c(0, 0, 0, 0, 0, 0, 1, 0, 0), rep(0, 9), rep(0, 9), c(0, 0, 0, 0, 2, 0, 0, 0, 0), rep(0, 9), rep(0, 9), c(0, 0, 0, 0, 0, 0, 2, 0, 0))
Then, using the network packet, I simply clicked:
require(network) plot(network(psmat), coord = cbind(X, Y), vertex.cex = pchsize, vertex.col = fillcol, label = indvidual, edge.col = psmat)
This is not very beautiful in itself, but I think it gives you all the basic elements that you wanted.
For flowers, I think decimals are simply rounded - I was not sure what to do with them.
I know that I have seen people build networks in ggplot, so this can give you a better result.
Edit: So here is a really confusing way to directly turn your data into a network object - someone else can fix it. In addition, I add an edge attribute (named "P" for parental status) and assign the first set to 1 and the second set to 2. This can be used when plotting to set the colors.
P1 <- match(Parent1, indvidual) e1 <- cbind(P1, 1:9); e1 <- na.omit(e1); attr(e1, 'na.action') <- NULL P2 <- match(Parent2, indvidual) e2 <- cbind(P2, 1:9); e2 <- na.omit(e2); attr(e2, 'na.action') <- NULL en1 <- network.initialize(9) add.edges(en1, e1[,1], e1[,2]) set.edge.attribute(en1, 'P', 1) add.edges(en1, e2[,1], e2[,2], names.eval = 'P', vals.eval = 2) plot(en1, coord = cbind(X, Y), vertex.cex = pchsize, vertex.col = fillcol, label = indvidual, edge.col = 'P')