r - ggplot2 graphic does not match the label -


i'm having trouble making charts in order appears in axis.

i changed levels of factors in every possible way (relevel, level, ...). when plot main graphs, in correct order, labels in correct order too, boxplots in alphabetical order , content of 1 main graph switched (alphabetical order too).

image of problem

the code below works well:

a <- ggplot(data, aes(x = groupx, y = score, fill=groupx, order=groupx))+ scale_fill_manual(values=colours) +   theme(axis.text.x = element_text(angle = 45, hjust = 1),     legend.position="none",     panel.background = element_rect(fill = "white"),     panel.grid.major = element_line(colour = "gray95"),     panel.border = element_rect(fill = na, colour = "black", size = 2))+ ylab("lesion")+ xlab("")+ guides(colour=false)+ facet_wrap(~ portion) 

the code below produces correct facet:

enter image description here

when try plot with:

a + geom_boxplot() 

the order of bars , entire graph appears in alphabetical order.

levels in correct format. can't figure how correct this.

  • reproducible example

dataset:

structure(list(level = structure(c(1l, 1l, 1l, 1l, 1l, 1l, 1l,  2l, 2l, 2l, 2l, 2l, 2l, 2l, 2l, 3l, 3l, 3l, 3l, 3l, 3l, 3l, 3l,  4l, 4l, 4l, 4l, 4l, 4l, 4l, 4l, 4l, 5l, 5l, 5l, 5l, 5l, 5l, 5l,  5l, 5l, 5l, 5l, 5l, 5l, 5l), .label = c("a", "b", "c", "d", "e" ), class = "factor"), factor = structure(c(1l, 1l, 3l, 3l, 2l,  2l, 2l, 1l, 1l, 1l, 2l, 2l, 2l, 3l, 3l, 1l, 1l, 1l, 2l, 2l, 2l,  3l, 3l, 1l, 1l, 1l, 2l, 2l, 2l, 3l, 3l, 3l, 1l, 1l, 1l, 1l, 2l,  2l, 2l, 2l, 3l, 3l, 3l, 3l, 3l, 3l), .label = c("x", "y", "z" ), class = "factor"), valor = c(12, 11, 20, 15, 2, 5, 21, 21,  51, 1, 2, 15, 2, 56, 5, 21, 5, 12, 21, 15, 23, 5, 4, 55, 1, 2,  89, 2, 4, 12, 23, 10, 12, 51, 45, 2, 15, 32, 21, 15, 4, 5, 45,  45, 2, 14)), .names = c("level", "factor", "valor"), row.names = c(na,  -46l), class = "data.frame") 

code without change order:

a <- ggplot(data, aes(x = level, y = valor, fill=factor, order=level)) +      facet_wrap(~ factor) + geom_boxplot() 

when set factor - fast way:

levels(data$factor) <- c("y", "z", "x") levels(data$level) <- c("d", "c", "a", "b", "e") 

labels changed, plot don't change.

you try change order of levels

levels(data$factor) <- c("y", "z", "x") levels(data$level) <- c("d", "c", "a", "b", "e") 

however, change names of levels. first level before called "y", still first level , there still same data associated it. can redefine factor change order. should give expected result:

data$factor <- factor(data$factor, c("y", "z", "x")) data$level <- factor(data$level, c("d", "c", "a", "b", "e")) 

let me show effect has. first, plot data is:

enter image description here

then, redefine factors , plot again:

data$factor <- factor(data$factor, c("y", "z", "x")) data$level <- factor(data$level, c("d", "c", "a", "b", "e")) ggplot(data, aes(x = level, y = valor, fill=factor)) +    facet_wrap(~ factor) + geom_boxplot() 

enter image description here


Comments

Popular posts from this blog

php - Wordpress website dashboard page or post editor content is not showing but front end data is showing properly -

How to get the ip address of VM and use it to configure SSH connection dynamically in Ansible -

javascript - Get parameter of GET request -