0

この質問のテーマは単純ですが、私を夢中にさせます。1.使用方法melt() 2.単一の1つの画像で複数行を処理する方法

これが私の生データです:

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を使用して2つの変数を線としてプロットし、次のように複数変数の複数線を描画する方法を 学びました。ここに画像の説明を入力してください

次のコードは、上記のプロットを取得できます。ただし、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()

name_characteristicsではなく、時系列を示す実数として0 15 3060120を処理できればいいのですが。これを試しても失敗しました。

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()

Loooooooあなたの助けを楽しみにしています。

Q2:次のスクリプトで1行にspline()関数を追加できることを学びましたが、1つの画像の3行すべてに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)))
4

1 に答える 1

3

あなたのvariableコラムは要因です(あなたはを呼び出すことによって確認することができますstr(df2))。数値に戻すだけです。

df2$variable <- as.numeric(as.character(df2$variable))

他の質問については、次のようなgeom_smoothorを使用することに固執することをお勧めします。stat_smooth

p <- ggplot(data = df2, aes(x=variable, y= value, group = sample, colour=sample)) + 
      geom_line() + 
      geom_point()

library(splines)
p + geom_smooth(aes(group = sample),method = "lm",formula = y~bs(x),se = FALSE)

これは私にこのようなものを与えます:

ここに画像の説明を入力してください

于 2012-09-19T18:03:52.950 に答える