Построение упорядоченных факторов по оси X в ggplot2 - PullRequest
0 голосов
/ 02 июля 2018

У меня есть следующие данные.

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, а для других он будет другим. Однако, когда я строю график, ось X автоматически переставляется на 1-6, даже если я учитываю столбец pos. Любые предложения о том, как исправить это?

1 Ответ

0 голосов
/ 02 июля 2018

Вот решение, но для построения графика в нужном порядке мне нужно было создать новую переменную с уникальными именами. Переменная является комбинацией столбцов 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")

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...