2014-11-18 4 views
0

У меня есть dataframe, подобный следующему:Как определить порядок построения строк в ggplot2 для сгруппированных строк?

set.seed(1) 
df = data.frame(group = sort(rep(1:15,5)), x = rep(1:5,15), 
y = c(runif(25,-1,1), runif(25, -.5,.5),runif(25,-1,1)), 
flag = c(rep('false', 25), rep('true',25),rep('false', 25))) 

, где х и у координаты для построения, группа является идентификатором для различных линий, и флаг представляет собой логическое значение, указывающее специальное подмножество групп линий. Я хотел бы использовать ggplot для построения этих строк, чтобы линии с flag = 'true' отображались сверху. Однако порядок построения графика, по-видимому, определяется только именем группы. В моем примере df, поскольку значения с flag = 'true' соответствуют группам 6-10, они отображаются над группами 1-5, но ниже групп 11-15. Это происходит, даже если я пытаюсь использовать order эстетическими следующим образом:

ggplot(data = df, aes(x = x, y = y, colour = flag, 
group = group, order = flag)) + geom_line(size = 3) 

Я могу получить заказ построения графиков я пожелаю, если переименовать метки группы (например, если примеры с flag = true представляют собой группы 11 -15 вместо 6-10), но я бы предположил, что есть лучший способ сделать это. Есть ли способ переопределить порядок по имени группы?

+0

Попробуйте посмотреть на 'geom_path' –

ответ

2

Один из способов - подмножество данных при рисовании линий. Сначала вы хотите нарисовать линии для ложной группы, затем истинную группу.

ggplot(data = df, aes(x = x, y = y, colour = flag, 
     group = group)) + 
geom_line(data = subset(df, flag == "false"), size = 3) + 
geom_line(data = subset(df, flag == "true"), size = 3) 

enter image description here

Смежные вопросы