2013-11-27 2 views
1

Я пытаюсь рассчитать распределение продолжительности поездки (за каждые 10 миль на расстоянии я хочу узнать Процент поездок в этом бункере за этот конкретный год). Когда я рисую его в ggplot2, мои метки меток X-оси упорядочены в алфавитном порядке, а не в порядке увеличения расстояния. Я попытался использовать различные трюки, предложенные (Change the order of a discrete x scale), но я не получаю нигде. Одна ссылка My code ниже, и набор данных находится здесь (http://goo.gl/W1jjfL).Как переставить строки X-тиковых меток в ggplot2

library(ggplot2) 
library(reshape2) 

nwpt <- subset(nonwork, select=c(Distance, PersonTrips1995, PersonTrips2001, PersonTrips2009)) 
nwpt <- melt(nwpt, id.vars="Distance") 

ggplot(data=nwpt, aes(x=Distance, y=value, group=variable, colour=variable)) + scale_x_discrete(name="Distance") + geom_line(size=0.5) + ggtitle("Non Work Person Trips") + ylab("Percent") 

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

is.factor (nwpt $ Distance) 1 ИСТИНА

Однако, выход я получаю не так, как я желаю. Вместо 10 миль, которые являются первой категорией, 10-14 миль являются следующими и т. Д. Я получаю график, как показано ниже (PDF здесь: http://goo.gl/V7yvxT).

enter image description here

Любая помощь приветствуется. ТИА Кришнан

+0

изменить порядок уровней фактора. Я думаю, что 'reorder.factor()' функция в пакете 'gdata' автоматически сделает то, что вам нужно. –

ответ

2

Вот один из способов:

library(ggplot2) 
library(reshape2) 

nwpt <- subset(nonwork, 
       select=c(DID,Distance,PersonTrips1995,PersonTrips2001,PersonTrips2009)) 
nwpt <- melt(nwpt, id.vars=c("DID","Distance")) 

ggplot(data=nwpt, aes(x=DID, y=value, colour=variable)) + 
    geom_line(size=0.5) + 
    labs(title="Non Work Person Trips", y="Percent") + 
    scale_x_discrete(name="Distance", labels=nwpt$Distance) + 
    theme(axis.text.x=element_text(angle=90)) 

Производит это с вашим набором данных:

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