I recently found THIS site on the internet which I thought would be another good case-study.
As a standalone figure, it can be rendered as follows with ggtern:
#Load the data df <- read.table(file = "~/Desktop/PPS-data.txt", header = T) #Create the plot and store plot <- ggtern(data = df, aes(x = Xyp, y = XO, z = XY)) + geom_point(aes(fill = Root), size = 4, shape = 21, color = "black") + ggtitle("PPS 3-State Model") + labs(fill = "Root States") + theme_tern_rgbw() + theme(legend.position = c(0,1), legend.justification = c(0, 1)) #Render plot
However, in order to distinguish the different categories, perhaps a facetted approach would be better:
#Render w/ Facetting plot + facet_wrap(~Root)