У меня есть набор данных, который я хотел бы построить так:ggplot2 сложенной гистограммы с использованием строк в качестве точек данных
Теперь это нанесено с помощью LibreOffice Calc в Ubunutu. Я попытался сделать это в R, используя следующий код:
ggplot(DATA, aes(x="Samples", y="Count", fill=factor(Sample1)))+geom_bar(stat="identity")
Это не дает мне столбчатую диаграмму для каждого образца, а один один график. У меня был аналогичный вопрос, который использовал другой файл данных, на который был дан ответ here. Однако в этой проблеме у меня нет только одного образца, но информация по крайней мере три. В LibreOffice Calc или Excel я могу выбрать опцию stacked bar graph, а затем выбрать использование строк в качестве серии данных. Как достичь аналогичного графика в ggplot2?
Вот dataframe/объект, для которого я пытаюсь произвести график:
Aminoacid Sequence,Sample1,Sample2,Sample3
Sequence 1,16,10,33
Sequence 2,2,2,7
Sequence 3,1,1,6
Sequence 4,4,1,1
Sequence 5,1,2,4
Sequence 6,4,3,14
Sequence 7,2,2,2
Sequence 8,8,5,12
Sequence 9,1,3,17
Sequence 10,7,1,4
Sequence 11,1,1,1
Sequence 12,1,1,2
Sequence 13,1,1,1
Sequence 14,1,2,2
Sequence 15,5,4,7
Sequence 16,3,1,8
Sequence 17,7,5,20
Sequence 18,3,3,21
Sequence 19,2,1,5
Sequence 20,1,1,1
Sequence 21,2,2,5
Sequence 22,1,1,3
Sequence 23,4,2,9
Sequence 24,2,1,1
Sequence 25,4,4,3
Sequence 26,4,1,3
Я скопировал содержимое файла .csv, достаточно того, что воспроизводимый? Он работал для меня, чтобы просто использовать read.csv (.file) в R.
Edit:
Спасибо за перенаправление меня на другую должность с очень похожей проблемой, я не нашел, что раньше. Этот пост значительно приблизил меня к решению. Я должен был изменить код только немного, чтобы соответствовать моей проблеме, но вот решение:
df <- read.csv("example.csv")
df2 <- melt(example, id="Aminoacid.Sequence")
ggplot(df2, aes(x=variable, y=value, fill=Aminoacid.Sequence))+geom_bar(stat="identity")
Использование variable
, как на оси х составляю гистограмму для каждого образца (Sample1-sample3 в примере). Использование y=value
использует значение в каждой ячейке для этого образца по оси y. И самое главное, используя fill="Aminoacid.Sequence"
, складывает значения для каждой последовательности друг на друга, давая мне тот же график, что и на скриншоте выше!
Благодарим за помощь!
Ваш вопрос не содержит [воспроизводимого примера] (http://stackoverflow.com/q/5963269/4303162). Поэтому трудно понять вашу проблему и дать вам соответствующий ответ. Пожалуйста, сделайте свои данные доступными (например, с помощью 'dput()') или используйте один из примеров наборов данных в R. Также добавьте минимальный код, необходимый для воспроизведения вашей проблемы на ваш пост. – Stibu
«расплавьте» свои данные. ggplot2 предназначен для долговременных данных. – Roland
Спасибо! Я добавил примеры данных, это достаточно? – Vaxin