2013-07-15 2 views
0

У меня есть пул данных, как показано ниже знаков 1 и знаки 2 в процентахсортировка мульти данных столбцов в R

Subject Marks1 Marks2 

ABC  45  55 
CDE  34  66 
DHD  54  46 
XYZ  35  65 
YXS  56  44 
YDT  88  12 

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

код я написал

n.data = ddply(c.data,.(subject), transform, pos = cumsum(value) - 0.5*value) 

plot = ggplot(n.data, aes(x = subject, y = value)) + 
    geom_text(aes(label = value, y = pos), size = 3, face="bold", colour="white") + 

    labs(fill="") 

ответ

3

Есть некоторые проблемы, чтобы запустить ваш код. Во-первых, я думаю, вы пропустили ту часть, где вы растопить данные из данных, вы показали, чтобы получить c.data:

c.data <- melt(dat, id.var="Subject") 

Во-вторых, ваш subject должен быть Subject:

В-третьих, так как вы проходите как x и y аргументы в пользу эстетики, вы должны сделать stat = "identity". В противном случае вы получите предупреждение, потому что аргумент по умолчанию - stat = "bin".

Наконец, чтобы заказать участок по вашему желанию, вам необходимо будет соответственно установить уровни . Итак, вот полный код:

# set factor levels 
dat$Subject <- factor(dat$Subject, levels = dat$Subject[order(dat$Marks1)]) 

require(reshape2) 
c.data <- melt(dat, id.var="Subject") 

require(plyr) 
n.data = ddply(c.data,.(Subject), transform, pos = cumsum(value) - 0.5*value) 

require(ggplot2) 
plot = ggplot(n.data, aes(x = Subject, y = value)) + 
    geom_bar(stat = "identity", colour = "#000000", aes(fill = variable)) + 
    geom_text(aes(label = value, y = pos), size = 3, face="bold", colour="white") + 
    scale_fill_manual(values=c("#FFFFFF", "#000000")) + 
    scale_y_continuous(limits=c(0, 100), breaks=seq(0,100, by = 10)) + 
    theme(axis.line = element_line(), 
      axis.text.x=element_text (angle=60,hjust=1,colour="black"), 
      axis.text.y=element_text(colour="black"), 
      axis.title.x = element_blank(), 
      axis.title.y = element_blank(), 
      panel.background = element_blank(), 
      axis.ticks=element_blank()) + 
    labs(fill="") + scale_colour_discrete(breaks=NULL) 

А вот сюжет:

enter image description here

+0

Спасибо Arun для мгновенного ответа, но ошибка просто продолжается снова я имею в виду не существует никакой разницы в графике созданный даже после необходимых изменений, данные графика отлично работают до тех пор, пока не будет применена функция ddply, и она вернется после применения функции ddply. – Zack

+0

. С данными, которые вы показали выше, код, который я показал, как вы можете видеть, работает как вы хотели (iiuc). Таким образом, вам придется показывать данные, где это не работает. До тех пор я не могу отлаживать. – Arun

+0

n.data показывает ошибку, поэтому мне нужно исправить n.data, но я не могу, пожалуйста, помогите мне с этим – Zack

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