我有以下数据。
pos <- c(1,2,3,4,5,6,1,2,3,4,5,6,1,2,3,4,5,6,1,2,3,4,5,6)
block <- c(1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2)
set <- c(1,1,1,1,1,1,2,2,2,2,2,2,3,3,3,3,3,3,4,4,4,4,4,4)
fsize <- c(4,5,6,1,2,1,2,2,3,4,5,1,7,11,2,1,2,3,5,3,5,6,1,2)
dat <- data.frame(pos,block,set,fsize)
dat <- dat[order(block,set,-fsize),]
dat$pos <- as.factor(dat$pos)
ggplot(dat, aes(x = pos, y = fsize)) + geom_bar(stat="identity") +
facet_wrap(~block+set)
每个位置pos
与大小fsize
相关联。每个块/集中有6个位置。我想按减小的女性尺寸排列尺寸。
因此,例如,具有重新排列位置的第一个块/集将为3,2,1,5,4,6
,而其他块/集将有所不同。但是,当我绘制它时,即使我分解pos
列,x轴也会自动重新排列为1-6。有关如何纠正此问题的任何建议?
答案 0 :(得分:3)
这是一个解决方案,但是为了按所需顺序绘制,我需要创建一个具有唯一名称的新变量。该变量是set
和pos
列的组合。
dat <- data.frame(pos,block,set,fsize)
dat <- dat[order(block,set,-fsize),]
#make a key variable in the overall desired order
key<-paste(dat$set, dat$pos, sep=",")
#make an new ordered factor variable in the proper order
dat$order <- factor(key, levels= key, ordered =TRUE)
ggplot(dat, aes(x = order, y = fsize)) + geom_bar(stat="identity") +
facet_wrap(~block+set, scales="free_x") + labs(x="Set,Pos")