Я борюсь, получите правильное упорядочение переменных в графике, который я сделал с GGPlot2 в R.
, предположим, у меня есть такое дата, как:
set.seed(1234)
my_df<- data.frame(matrix(0,8,4))
names(my_df) <- c("year", "variable", "value", "vartype")
my_df$year <- rep(2006:2007)
my_df$variable <- c(rep("VX",2),rep("VB",2),rep("VZ",2),rep("VD",2))
my_df$value <- runif(8, 5,10)
my_df$vartype<- c(rep("TA",4), rep("TB",4))
, который Дает следующую таблицу:
year variable value vartype
1 2006 VX 5.568517 TA
2 2007 VX 8.111497 TA
3 2006 VB 8.046374 TA
4 2007 VB 8.116897 TA
5 2006 VZ 9.304577 TB
6 2007 VZ 8.201553 TB
7 2006 VD 5.047479 TB
8 2007 VD 6.162753 TB
Существует четыре переменных (VX, VB, VZ и VD), принадлежащие двум группам переменных типов, (Ta и Tb).
Я хотел бы построить значения как горизонтальные полосы на Ось y, . заказала вертикально сначала по вариантам вариабельных группах, а затем по именам переменной , граненым в году, со значениями на оси X и заполнением. (т.е. в этом упрощенном примере заказ должен быть, сверху вниз, vb, vx, vd, vz)
1) Моя первая попытка была пробовать следующее:
ggplot(my_df,
aes(x=variable, y=value, fill=vartype, order=vartype)) +
# adding or removing the aesthetic "order=vartype" doesn't change anything
geom_bar() +
facet_grid(. ~ year) +
coord_flip()
Однако переменные перечислены в обратном направлении Алфавитный порядок, но не на VARTYPE : порядок = VARTYPE
Эстетика игнорируется.
2) После ответа на аналогичный вопрос, который я опубликовал вчера, я попробовал следующее, основываясь на посте стержней по порядку в GGPLOT2 гистограмма :
my_df$variable <- factor(
my_df$variable,
levels=rev(sort(unique(my_df$variable))),
ordered=TRUE
)
Этот подход получает переменные в вертикальном алфавите Заказ на сюжете, но игнорирует тот факт, что переменные должны быть заказаны сначала путем переменных Goups (с Ta-переменными сверху и TB-переменными ниже).
3) Следующее дает так же, как 2 (выше):
my_df$vartype <- factor(
my_df$vartype,
levels=sort(unique(my_df$vartype)),
ordered=TRUE
)
... который имеет те же проблемы, что и первый подход (переменные перечисленные в обратном алфавитном порядке, группы игнорируют)
4) Другой подход, Исходя из оригинального ответа на стержней по порядку в гистограмме GGPlot2 , также дает одинаковую плату, что и 2, выше
my_df <- within(my_df,
vartype <- factor(vartype,
levels=names(sort(table(vartype),
decreasing=TRUE)))
)
, я озадачен тем, что, несмотря на несколько подходов, эстетика = VARTYPE
игнорируется. Тем не менее, кажется, работает в несвязанной проблеме: http://lelearnr.wordpress.com/2010/03/23/ggplot2-Changing-the-default-order-of-legend-labels-and-stacking- данных /
Я надеюсь, что проблема ясна и приветствует любые предложения.
Matteo
Я разместил аналогичный вопрос вчера, но, к сожалению, я сделал несколько ошибок при ношении проблемы и обеспечивая воспроизводимый пример. С тех пор я слушал несколько предложений, и тщательно искал Stakoverflow для подобного вопроса и применял, насколько мне известно, каждое предложенное сочетание решений, безрезультатно. Я снова публикую вопрос, надеясь, что смог решить мою проблему и, надеюсь, будет полезен для других.