0

ggplot を使用して 3 つの線を持つグラフを描画しようとしています。しかし、その後、線のオンとオフを切り替えて、混雑したプロットを見ているときに、データ系列の一部を非表示にできるようにしたいと考えています。チェックボックスを含むrstudioの操作パッケージを使用してこれを行う方法(または可能であっても)を理解できないようです。誰かがこのパッケージまたは他のパッケージでこれを行う方法を教えてもらえますか? ありがとうございました

コード:

manipulate((ggplot(MeanFrameMelt, aes(x=variable, y=value, 
           color=id))+ geom_point()), 
           id = checkbox(FALSE, "File1"))

MeanFrameMelt (データ):

id  variable    value
1   file1   V1  0.04114207
2   file2   V1  0.31830645
3   file3   V1  0.05797068
4   file1   V2  0.04138554
5   file2   V2  0.31510753
6   file3   V2  0.05830449
7   file1   V3  0.04157882
8   file2   V3  0.31220430
9   file3   V3  0.05865419
10  file1   V4  0.04177334
11  file2   V4  0.31117608
12  file3   V4  0.05900918
4

3 に答える 3

2

これは実際には操作に関する質問ではなく、プロット式を作成するときに使用するブール値が 3 つあるという質問です。どうやってするの?checkbox呼び出しはこれらを作成します。以下は、特定の質問に正確に答えるものではありませんが、これを混乱させないようにする方法を示しています。エレガントさを犠牲にして、行を1つずつ追加してください。これは RStudio で実行できますが、RStudio なしで動作するバージョンの操作を使用しています。

require(gWidgets2) ## from github
options(guiToolkit="Qt") ## other choices too
source(system.file("examples", "manipulate.R", package="gWidgets2"))

manipulate({
  plot(mpg ~ wt, mtcars)
  if(do_lm)
    abline(lm(mpg ~ wt, mtcars))
  if(do_loess)
    with(mtcars, lines(lowess(wt, mpg)))
  ## ...
},
           do_lm=checkbox("Add regression line"),
           do_loess = checkbox("Add lowess fit")
           )
于 2012-12-13T19:11:09.440 に答える
1

tkexampではなく、TeachingDemos パッケージの関数を使用する 1 つのアプローチを次に示しmanipulateます。

library(TeachingDemos)
tklist <- rep( list(list('checkbox',init="T")), 3 )
names(tklist) <- levels( MeanFrameMelt$id )

tkfun <- function(...) {
    w <- c(...)
    w2 <- names(w)[w]
    df <- MeanFrameMelt[ MeanFrameMelt$id %in% w2, ]
    print(ggplot(df, aes(x=variable, y=value,
                  color=id)) + geom_point() )
}

tkexamp( tkfun, tklist )

または、最後の行が次のようになっていると、少し見栄えがよくなります。

tkexamp( tkfun, list(id=tklist), plotloc='left' )

色が同じままで、オプションで y 制限が同じままになるように、ggplot2 に精通している他の誰かがこれを変更する方法について協力する必要があります。

編集

一部の値を表示しない場合でも、色と y 制限を同じに保つ関数のバージョンを次に示します。

tkfun <- function(...) {
  w <- c(...)
  w2 <- names(w)[w]
  df <- MeanFrameMelt[ MeanFrameMelt$id %in% w2, ]
  print(ggplot(df, aes(x=variable, y=value, colour=id)) + geom_point() +
    scale_colour_discrete(drop=FALSE) + 
    ylim(range(MeanFrameMelt$value))
  )
}
于 2012-12-13T18:00:37.787 に答える