Тема этого вопроса проста, но сводит меня с ума: 1. как использовать melt()
2. как работать с несколькими строками в одном изображении?
Вот мои необработанные данные:
a 4.17125 41.33875 29.674375 8.551875 5.5
b 4.101875 29.49875 50.191875 13.780625 4.90375
c 3.1575 29.621875 78.411875 25.174375 7.8012
Q1: я узнал из этого поста отображение двух переменных в виде линий с использованием ggplot2 на тот же график, чтобы узнать, как рисовать многострочные линии для нескольких переменных, вот так:
Следующие коды могут получить приведенный выше график. Однако ось x действительно представляет собой временной ряд.
df <- read.delim("~/Desktop/df.b", header=F)
colnames(df)<-c("sample",0,15,30,60,120)
df2<-melt(df,id="sample")
ggplot(data = df2, aes(x=variable, y= value, group = sample, colour=sample)) + geom_line() + geom_point()
Хотелось бы, чтобы 0 15 30 60 120 можно было рассматривать как реальное число, чтобы показать временной ряд, а не name_characteristics. Даже попробовав это, я потерпел неудачу.
row.names(df)<-df$sample
df<-df[,-1]
df<-as.matrix(df)
df2 <- data.frame(sample = factor(rep(row.names(df),each=5)), Time = factor(rep(c(0,15,30,60,120),3)),Values = c(df[1,],df[2,],df[3,]))
ggplot(data = df2, aes(x=Time, y= Values, group = sample, colour=sample))
+ geom_line()
+ geom_point()
Loooooooooking вперед к вашей помощи.
Q2: Я узнал, что следующий скрипт может добавить функцию spline() для одной строки. Как насчет того, чтобы применить spline() для всех трех строк в одном изображении?
n <-10
d <- data.frame(x =1:n, y = rnorm(n))
ggplot(d,aes(x,y))+ geom_point()+geom_line(data=data.frame(spline(d, n=n*10)))