Порядок записей легенды в GGPlot2 Barplots с CORD_FLIP ()

Я борюсь, получите правильное упорядочение переменных в графике, который я сделал с 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 Эстетика игнорируется.

enter image description here

2) После ответа на аналогичный вопрос, который я опубликовал вчера, я попробовал следующее, основываясь на посте стержней по порядку в GGPLOT2 гистограмма :

my_df$variable <- factor(
  my_df$variable, 
  levels=rev(sort(unique(my_df$variable))), 
  ordered=TRUE
)

Этот подход получает переменные в вертикальном алфавите Заказ на сюжете, но игнорирует тот факт, что переменные должны быть заказаны сначала путем переменных Goups (с Ta-переменными сверху и TB-переменными ниже).

enter image description here

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 для подобного вопроса и применял, насколько мне известно, каждое предложенное сочетание решений, безрезультатно. Я снова публикую вопрос, надеясь, что смог решить мою проблему и, надеюсь, будет полезен для других.

12
задан Community 23 May 2017 в 10:30
поделиться