So (as for the answer I gave for this question ), I canβt provide you the answer using triplot
(since I donβt know which link this function uses to build the diagram), but here is the solution from scratch:
#First draw the empty ternary diagram: plot(NA,NA,xlim=c(0,1),ylim=c(0,sqrt(3)/2),asp=1,bty="n",axes=F,xlab="",ylab="") segments(0,0,0.5,sqrt(3)/2) segments(0.5,sqrt(3)/2,1,0) segments(1,0,0,0) text(0,0,labels="1, 2 or 3",pos=1) text(1,0,labels="6",pos=1) text(0.5,sqrt(3)/2,labels="4 or 5",pos=3)
Obviously you can turn this into a function if you need ...

Edit: with tags
paste(seq(10,90,by=10),"%")->lab text(grid.tern[9:1,],paste(lab,"\n(1, 2 or 3)"),col="grey80",cex=0.7, pos=2) text(grid.tern[18:10,],paste(lab,"\n(4 or 5)"),col="grey80",cex=0.7, pos=4) text(grid.tern[27:19,],paste(lab,"\n(6)"),col="grey80",cex=0.7, pos=1)

And with the data plotted on the chart
df<-data.frame('1, 2 or 3'=c(10,33.3,50,100), '6'=c(0,33.3,50,0), '4 or 5'=c(90,33.3,0,0)) df X1..2.or.3 X6 X4.or.5 1 10.0 0.0 90.0 2 33.3 33.3 33.3 3 50.0 50.0 0.0 4 100.0 0.0 0.0 t(apply(df, 1, tern2cart)) -> df.tern points(df.tern, pch="*", cex=3)
