2016-11-08 3 views
1

Вот мои данные:Иерархическая подгруппой гистограмм в ggplot 2

hiat clasa total 
a.a I 26 
a.e A 137 
a.i A 122 
a.î A 11 
a.o A 49 
a.u A 549 
ă.i A 343 
ă.o C 2 
ă.u A 149 
î.i C 162 
î.u C 11 
e.a D 326 
e.e I 209 
e.i A 230 
e.î A 117 
e.o C 591 
e.u A 314 
i.a D 1879 
i.e D 5101 
i.i I 101 
i.î C 1 
i.o D 1657 
i.u C 423 
o.a D 140 
o.e C 138 
o.i A 350 
o.î A 3 
o.o I 119 
o.u A 27 
u.a D 254 
u.ă D 1 
u.e D 59 
u.i C 1125 
u.o D 65 
u.u I 21 

Я хотел бы группе clasa, и внутри каждой подгруппы имеют иерархический порядок hiat. Порядок групп должен быть A, D, C, I. Проблема в том, что я не знаю, как писать код. Если вы можете помочь мне с любыми предложениями, я был бы признателен.

Я пытался что-то вроде этого:

library(ggplot2) 
setwd("D:/PROIECTUL_DOCTORAL/CAPITOLUL_DE_FONOSTATISTICA/Rstat") 
Data<- read.table ("hiat2.txt", sep="\t",header=TRUE) 
Data <- data.frame (mygroup = c('A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'D', 'D', 'D', 'D', 'D', 'D', 'D', 'D', 'D', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'I', 'I', 'I', 'I', 'I'), 
     mysubgroup = factor (c("a.u", "o.i", "ă.i", "e.u", "e.i", "ă.u", "a.e", "a.i", "e.î", "a.o", "o.u", "a.î", "o.î", "i.e", "i.a", "i.o", "e.a", "u.a", "o.a", "u.o", "u.e", "u.ă", "u.i", "e.o", "i.u", "î.i", "o.e", "î.u", "ă.o", "i.î", "e.e", "o.o", "i.i", "a.a", "u.u")), 
     total = c(549, 350, 343, 314, 230, 149, 137, 122, 117, 49, 27, 11, 3, 5101, 1879, 1657, 326, 254, 140, 65, 59, 1, 1125, 591, 423, 162, 138, 11, 2, 1, 209, 119, 101, 26, 21)) 
ggplot(Data, aes(x = reorder(mygroup, +total), y = total, fill = mysubgroup)) + 
    geom_bar(position = "dodge", width = 0.5, stat = "identity") 

Полученный граф был не то, что мне было нужно. Порядок групп должен быть A, D, C, I и внутри каждой группы, бары должны отображаться от наименьшего к самому большому.

+0

Я не уверен, я понимаю, что вы хотите достичь. Каким будет желаемый результат? – Haboryme

+0

Попробуйте 'уровни (Data $ clasa) <- c (" A "," D "," C "," I ")' , а затем 'library (dplyr)' 'Data%>% group_by (clasa)%> % arr (clasa, hiat) ' – Haboryme

+0

Спасибо! Я до сих пор не использовал dplyr, поэтому я не знаю точно, где вставить в мой код то, что вы предложили. Я прошу прощения за то. Не могли бы вы мне помочь. Спасибо. Я довольно новичок в R. – Elena

ответ

0

Попробуйте один

ggplot(Data1, aes(x = mygroup, y = reorder(total, mygroup), fill = mysubgroup)) + 
    geom_bar(position = "dodge", width = 0.5, stat = "identity") 

enter image description here

+0

Большое вам спасибо! – Elena

+0

@Elena Его мое удовольствие ...... пожалуйста, не забудьте проголосовать, если вы почувствуете его право –

0
levels(df$clasa)<-c("A","D","C","I") 
library(dplyr) 
ordered=df%>%group_by(clasa)%>%arrange(clasa,hiat) 
library(ggplot2) 
ggplot(ordered)+geom_bar(aes(x=clasa,y=total,fill=hiat),stat = "identity",position="dodge") 

Что дает: enter image description here

+0

Теперь я понимаю! Спасибо за помощь мне! – Elena

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