Изменение порядка гистограмм ggplot2 по смешанному символу и числовой переменной


person arezaie    schedule 10.11.2017    source источник
comment
рассмотрите возможность использования mixedsort из gtools stackoverflow. ком/вопросы/20396582/   -  person Pierre L    schedule 10.11.2017


Ответы (3)


Когда у вас есть текст в R, он обычно преобразуется в фактор. По умолчанию этот фактор упорядочен в алфавитном порядке:

> melted$c
[1] C_2  C_4  C_8  C_16
Levels: C_16 C_2 C_4 C_8

ggplot будет использовать порядок коэффициента при построении графика. Вы можете использовать функцию factor. вручную указать порядок или уровни:

melted$c <- factor(melted$c, levels=c("C_2", "C_4", "C_8", "C_16"))

В этом случае установить порядок вручную не составит труда. В качестве альтернативы это можно сделать автоматически с помощью функции mixedsort из пакета gtools:

library(gtools)
melted$c <- factor(melted$c, levels=mixedsort(as.character(melted$c)))

Используя исходный код:

ggplot(melted, aes(x = c, y = value)) + 
  geom_bar(stat="identity", width = 0.3) + 
  geom_hline(yintercept  = 33)

введите здесь описание изображения

person Michael Harper    schedule 10.11.2017

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

ggplot(melted, aes(x = factor(c, levels=c("C_2", "C_4", "C_8", "C_16")), y = value)) + 
  geom_bar(stat="identity", width = 0.3) + 
  geom_hline(yintercept  = 33)
person sinQueso    schedule 10.11.2017

Ну, я сделал быстрый и грязный метод решения этой проблемы, используя следующий код

ggplot(melted,], aes(x = c, y = value)) + 
geom_bar(stat="identity", width = 0.3) + 
geom_hline(yintercept  = scale_reflist$reference_score[i]) + 
scale_x_discrete(limits=melted$c)

путем сортировки их в последнем выражении. Не знаю, является ли это "хорошим" методом. Любая обратная связь приветствуется

person arezaie    schedule 10.11.2017