2016-06-14 2 views
2

У меня есть следующий data.frame:Несколько графиков с различными оси х клещей

ef2 <- data.frame(X1=c(50,100,'bb','aa'), X2=c('A','A','B','B'), value=c(1,4,3,6))

Я хочу, чтобы создать два участка, один для каждой группы в X2.

Вот код, у меня есть и сюжет получается:

ggplot(data=ef2, aes(x=X1, y=value, group=X2)) + 
    facet_grid(.~X2, scales="free_x") + 
    geom_line(size=1) + 
    geom_point(size=3) + 
    xlab('') + 
    ylab('Y') 

enter image description here

Проблема состоит в том, что ось х упорядочен в алфавитном порядке, и я не знаю, как это исправить. Я попытался добавить scale_x_discrete, но я не знаю, как разделить группы. Вы можете увидеть график I получают путем добавления этого параметра в следующей ссылке:

ggplot(data=ef2, aes(x=X1, y=value, group=X2)) + 
    facet_grid(.~X2, scales="free_x") + 
    geom_line(size=1) + 
    geom_point(size=3) + 
    xlab('') + 
    ylab('Y') + 
    scale_x_discrete(limits=ef2$X1) 

enter image description here

Отредактировано: Я не могу изменить Ef2 data.frame. Я попытался упорядочить факторы в другом data.frame:

ef2 <- data.frame(X1=c(50,100,'bb','aa'), X2=c('A','A','B','B'), value=c(1,4,3,6)) 
ef2$X1 <- as.character(ef2$X1) 
nou <- data.frame(X1=factor(ef2$X1), levels=ef2$X1, X2=ef2$X2, value=ef2$value) 

Но это не работает.

+0

Google «уровни фактора порядка ggplot», и вы найдете много других сообщений на эту тему. – Henrik

+0

Моя проблема заключается не в том, чтобы упорядочить уровни факторов. Моя проблема заключается в том, как использовать мой data.frame для создания другого с упорядоченными факторами. – Marta

ответ

0

Это работает для меня, но я не уверен, что это именно то, что вам нужно: автоматически Avoid ggplot sorting the x-axis while plotting geom_bar() ggplot заказы, если Вы не предоставите уже упорядочены фактор:

ef2 <- data.frame(X1=factor(c('50','100','bb','aa'), levels = c('50','100','bb','aa')), X2=c('A','A','B','B'), value=c(1,4,3,6)) 

ggplot(data=ef2, aes(x=X1, y=value, group=X2)) + 
    facet_grid(.~X2, scales="free_x") + 
    geom_line(size=1) + 
    geom_point(size=3) + 
    xlab('') + 
    ylab('Y') 

enter image description here

Согласно этому сообщению ,

Update:

код вы используете имеет ошибку. levels является аргументом функции factor. Попробуйте это:

ef2 <- data.frame(X1=c(50,100,'bb','aa'), X2=c('A','A','B','B'), value=c(1,4,3,6)) 
ef2$X1 <- factor(ef2$X1, levels = unique(ef2$X1)) 
+0

Большое спасибо за ваш ответ! Проблема в том, что я не могу изменить ef2 data.frame. Я попытался создать новый: 'ef2 <- data.frame (X1 = c (50,100, 'bb', 'aa'), X2 = c ('A', 'A', 'B', ' B '), значение = c (1,4,3,6)) ef2 $ X1 <- as.character (ef2 $ X1) nou <- data.frame (X1 = коэффициент (ef2 $ X1), levels = ef2 $ X1, X2 = ef2 $ X2, значение = ef2 $ value) 'Но это не работает – Marta

+0

Отлично, спасибо! – Marta

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