2

ggplot を使用すると、データ系列 x と y の等高線をプロットできます。

library(ggplot2)
df <- data.frame(x=c(1:100),y=rnorm(100))
ggplot(df,aes(x=x,y=y))+geom_density2d()

主な 4 つの等高線 (95,75,50,25)max と (95,75,50,25)min のデータ出力をデータフレームに保存できるようにしたいと考えています。あなたの助けに感謝します。おそらく、ggplot を使用せずにこれを直接行う方法があります。

4

1 に答える 1

5

関数ggplot_build() をggplot()オブジェクトの周りで使用すると、プロットに使用されるすべてのデータにアクセスできます。データはリスト要素に格納されますdata

p<-ggplot_build(ggplot(df,aes(x=x,y=y))+geom_density2d())

str(p$data)
List of 1
 $ :'data.frame':   1895 obs. of  6 variables:
  ..$ level: num [1:1895] 5e-04 5e-04 5e-04 5e-04 5e-04 5e-04 5e-04 5e-04 5e-04 5e-04 ...
  ..$ x    : num [1:1895] 1 2 3 4 5 ...
  ..$ y    : num [1:1895] 1.42 1.44 1.45 1.45 1.46 ...
  ..$ piece: int [1:1895] 1 1 1 1 1 1 1 1 1 1 ...
  ..$ group: Factor w/ 13 levels "1-001","1-002",..: 1 1 1 1 1 1 1 1 1 1 ...
  ..$ PANEL: int [1:1895] 1 1 1 1 1 1 1 1 1 1 ...

これらのデータを別のデータ フレームとして保存できます。

gg<-p$data[[1]]
head(gg)
  level        x        y piece group PANEL
1 5e-04 1.000000 1.423926     1 1-001     1
2 5e-04 2.000000 1.435286     1 1-001     1
3 5e-04 3.000000 1.445293     1 1-001     1
4 5e-04 4.000000 1.454166     1 1-001     1
5 5e-04 5.000000 1.462106     1 1-001     1
6 5e-04 5.255343 1.463967     1 1-001     1

group変数は、piece各値が属する行を示します (この場合、1 - 外側の行、13 - 内側の行)。

于 2013-03-27T18:42:06.017 に答える