Ваш фрейм данных организован хорошо, вам не нужно указывать начало и конец фрейма данных.
ggplot ожидают, что каждая строка в вашей df является наблюдением, а каждый столбец - переменной.Это означает, что нам нужно изменить форму данных
library(tidyverse)
test <- data.frame(start=rep("0",10), end=rep("100",10),
Type1=c("530","630","500","400","350","600","1032","378","430","567"),
Type2=c("100","70","50","120","130","50","75","86","90","95"),
Type3=c("10","50","40","22","13","45","15","36","19","20"))
Обратите внимание, что я исправил опечатку.Теперь мы можем преобразовать это.Вы можете прочитать больше об этом здесь ( приборка ).
df <- gather(test, key = 'Type', value = 'Value', contains('type'))
Содержит указывает, какие переменные использовать для заполнения столбца значений.Ключ и значение просто указывают, какие имена давать столбцам.
> head(df)
start end Type Value
1 0 100 Type1 530
2 0 100 Type1 630
3 0 100 Type1 500
4 0 100 Type1 400
5 0 100 Type1 350
6 0 100 Type1 600
Теперь мы можем легко построить его, используя ggplot.
ggplot(df, aes(x = Value, group = Type, fill = Type, color = Type)) +
geom_density(alpha = 0.3)