Подтвердить что ты не робот

Обратный порядок заполнения гистограмм в ggplot2

Я заметил, что значение по умолчанию для заполнения баров в гистограмме, созданной с использованием графика, является обратным алфавитом, а легенда в упорядоченном алфавитном порядке. У меня есть какой-то способ заставить обоих заказать по алфавиту? Проблема очевидна в примере ниже. Бонусный вопрос: как я изменяю порядок слева направо, от алфавитного к уменьшающемуся счету? Благодаря

df <- data.frame(
  Site=c("A05","R17","R01","A05","R17","R01"),
  Group=c("Fungia","Fungia","Acro","Acro","Porites","Porites"),
  Count=c(6,8,6,7,2,9),
  Total=c(13,10,15,13,10,15)
)

  Site   Group Count Total
1  A05  Fungia     6    13
2  R17  Fungia     8    10
3  R01    Acro     6    15
4  A05    Acro     7    13
5  R17 Porites     2    10
6  R01 Porites     9    15

qplot(df$Site,data=df,weight=df$Count,geom="histogram", fill=df$Group, ylim = c(0,16)) + 
  xlab("Sites") + 
  ylab("Counts") + 
  scale_fill_hue(h=c(0,360), l=70, c=70,name = "Emergent Groups")

enter image description here

Я пытаюсь упорядочить подсчеты от высокого к низкому и цвета заливки, чтобы они соответствовали буквенному порядку легенды. Я пытался настроить его на несколько часов с советами от начальных сообщений, но без успеха. Любая помощь по этому поводу была бы очень признательна!!!

4b9b3361

Ответ 1

Если вы просто хотите совпадение с порядковым номером цвета, вы можете просто изменить условное обозначение: порядок цветов будет соответствовать, но легенда будет в обратном алфавитном порядке:

qplot(df$Site,data=df,weight=df$Count,geom="histogram", fill=df$Group, ylim = c(0,16)) + 
  xlab("Sites") + 
  ylab("Counts") + 
  scale_fill_hue(h=c(0,360), l=70, c=70,name = "Emergent Groups") +
  guides(fill = guide_legend(reverse = TRUE))

enter image description here

Чтобы получить алфавитный порядок назад, предварите вышеуказанный код путем переупорядочения группового фактора:

# reorder the groups
df$Group <- factor(df$Group , 
                   levels=levels(df$Group)[order(levels(df$Group), decreasing = TRUE)])

qplot(df$Site,data=df,weight=df$Count,geom="histogram", fill=df$Group, ylim = c(0,16)) + 
  xlab("Sites") + 
  ylab("Counts") + 
  scale_fill_hue(h=c(0,360), l=70, c=70,name = "Emergent Groups") +
  guides(fill = guide_legend(reverse = TRUE))

enter image description here

Для бонуса (заказывая бары за счет уменьшения общего количества) измените порядок факторов в переменной Site:

# reorder the sites
df$Site <- factor(df$Site, 
                  levels = levels(df$Site)[order(aggregate(Count ~ Site, data = df, sum)$Count, 
                                                 decreasing = TRUE)])
# reorder the groups
df$Group <- factor(df$Group , 
                   levels=levels(df$Group)[order(levels(df$Group), decreasing = TRUE)])

qplot(df$Site,data=df,weight=df$Count,geom="histogram", fill=df$Group, ylim = c(0,16)) + 
  xlab("Sites") + 
  ylab("Counts") + 
  scale_fill_hue(h=c(0,360), l=70, c=70,name = "Emergent Groups") +
  guides(fill = guide_legend(reverse = TRUE))

enter image description here