On 04/11/2019 9:25 a.m., Duncan Murdoch wrote:
On 04/11/2019 8:31 a.m., Luigi Marongiu wrote:Dear all, I am plotting some values with lattice barchart: the y-axis is automatically ordered alphabetically; is it possible to order the entries by number, so that the 'larger' histograms would be at the top of the plot? This is a working example``` library(lattice) Family = c("Adenoviridae", "Baculoviridae", "Herpesviridae", "Mimiviridae", "Myoviridae", "Pandoraviridae", "Phycodnaviridae", "Podoviridae", "Polydnaviridae", "Retroviridae", "Siphoviridae", "Unassigned") Normal = c(7, 15, 24, 8, 65, 24, 17, 16, 8, 15, 49 , 9) Tumour =c( 17, 75, 94, 14, 242, 28, 41, 69, 12, 11, 305, 51) Metastasis =c(41, 66, 95, 3, 173, 22, 33, 101, 12, 12, 552, 57) df = data.frame(Family, Normal, Tumour, Metastasis, stringsAsFactors = FALSE) COLS = c("darkolivegreen3", "brown3", "darkorchid3") barchart(Family ~ Normal+Tumour+Metastasis, data = df, stack = TRUE, xlim=c(1,1000), main = "Alphabetical order", xlab = expression(bold("Number of species")), ylab = expression(bold("Families")), auto.key = list(space = "top", columns=3), par.settings = list(superpose.polygon = list(col = COLS))) ```You could do it by using an ordered factor. For example, o <- order(Normal + Tumour + Metastasis) df$Ordered <- ordered(Family, levels = Family[o]) barchart(Ordered ~ Normal+Tumour+Metastasis, data = df, stack = TRUE, xlim=c(1,1000), main = "Ordered by total", xlab = expression(bold("Number of species")), ylab = expression(bold("Families")), auto.key = list(space = "top", columns=3), par.settings = list(superpose.polygon = list(col = COLS))) Duncan Murdoch
Sorry, I meant to add: you don't need to use an ordered factor for the plot. A regular factor with the levels in the order you want is fine, i.e. you could use
df$Ordered <- factor(Family, levels = Family[o])However, there are some other operations (e.g. comparison using ">") that do require the ordered factor.
Duncan Murdoch ______________________________________________ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.