分面顺序问题的解决
有张图
library('ggplot2')
ggplot(data = Salaries,aes(x = rank,y = salary,fill = sex))+
geom_boxplot()+
facet_wrap(~rank,nrow = 1,scales = 'free_x')+
scale_x_discrete(breaks = cc,
labels = c('Assistant\nProfessor',
'Associate\nProfessor',
'Full\nProfessor'))+
scale_y_continuous(breaks = c(50000,10000,150000,200000),
labels = c('$50K','$100K','$150K','$200K'))+
labs(title = 'Faculty Salary by Rank Sex',y = '',x = '')+
theme(legend.position = c(.1,.8),
panel.background = element_blank(),
axis.line = element_line(colour = "black"))+
scale_fill_npg()
image.png
默认分面的顺序是按照字母的顺序进行的,从A到Z,
但是有时候我们不想这样,如图要是我们想 fullprofessor 在前,这个时候就有问题了,难为了我好久,自己的数据并非如此,但是遇到的确实这个问题。就百思不得其解,一个一个试,发现只要分面设置好了,无论x轴的横坐标顺序如何变化,只要分面一加上,就立马唧唧。
试了好多后,发现是最初的梦想有问题——可能是是我给的就有问题,没顺序,他就默认是字母顺序了—把分面的参数因子顺序改一下就好了
dat =Salaries ##自带数据改不了,只能重新赋值一下了。
dat$rank = factor(dat$rank,levels = c('Prof','AssocProf','AsstProf'))
ggplot(dat,aes(x = rank,y = salary,fill = sex))+
geom_boxplot()+
facet_wrap(~rank,nrow = 1,scales = 'free_x')+
scale_x_discrete(breaks = cc,
labels = c('Assistant\nProfessor',
'Associate\nProfessor',
'Full\nProfessor'))+
scale_y_continuous(breaks = c(50000,10000,150000,200000),
labels = c('$50K','$100K','$150K','$200K'))+
labs(title = 'Faculty Salary by Rank Sex',y = '',x = '')+
theme(legend.position = c(.2,.8),
panel.background = element_blank(),
axis.line = element_line(colour = "black"))+
scale_fill_npg()
image.png
结果还可以,顺利解决!技能加一!
网友评论