At first sorry for the possibly dumb question of a newbie. I am using the hydrogeo package to visualize approx. 300 data within the Piper-Hill diagrams. The package is using a dataframe with 6 columns, first of them is containing the row.names, next four with the data itself. The last column contains "WaterTypes" dividing data to several categories. The diagram is created by the piper function, assigning different symbols following the row.names (I don't need id, however I can assign one symbol for the whole dataset using pch ) and assigmning colours following WaterTypes. Untill now it's working very well, what I need however is to change the legend, as it is showing all the 300 rows, even I assigned only one symbol. For me it is more appropriate to show the categories from the "WaterTypes" columns assigned to the colours. Could somebody give me a hint how to change the code to give me an appropriate result? The answer is probably in the help assigned to the "legend" of the graphics package, but it's quite unclear to me. Many thanks in advance Tomas The piece of code from the hydrogeo package creating the legend is here: ylegend <- X plotlegend <- function(dd, X, ...) { xid <- c(X + p) yid <- c(ylegend - (X/30) * 1:nrow(dd)) text(xid, yid, labels = row.names(dd), vfont = c("serif", "plain"), cex = 0.7) if (is.character(dd$pch)) { text(xid - (X/15), yid, labels = c(1:nrow(dd)), vfont = c("serif", "plain"), cex = 0.7) } else { points(rep(xid - (X/15), length(yid)), yid, pch = dd$pch, col = dd$col) } return(min(yid)) }